MYSQL正确的索引计算方法where条件(where a Table.a > Table.b)

标签 mysql indexing laravel-5.3

MySQL --version 是 5.7.18

什么是优化查询的正确方法,例如:

select id,name from mytable where a - b > 0

mytable 是这样的

  • id - 主键,增量,大整数
  • 名称 - varchar(255)
  • a - 整数,无符号,10
  • b - 整数,无符号,10

将索引添加到 ab 列有帮助吗?我应该只添加第三列 a_minus_b,为其编制索引,然后每次都小心地正确更新它,还是有更好的方法?

最佳答案

您可以使用生成的列,然后在该列上使用索引:

alter table mytable add column abdiff int generated always as (a - b);

create index idx_mytable_abdiff on mytable(abdiff);

注意:这使用 int 作为类型。您可以指定您喜欢的不同类型。

关于MYSQL正确的索引计算方法where条件(where a Table.a > Table.b),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379531/

相关文章:

mysql - 终端 INSERT 到 MySQL 不工作

php - 如何在 while 循环中连接表中的两列值,如 -product_name(product_quantity), ..... 并存储在变量中

mysql - 我们如何在sequelize中关闭数据库 `connection`

mysql - 此查询会在 Mysql 中生成不同的随机数吗?

javascript - 带 lodash/下划线的复合索引

在 Julia 中使用变量索引 Dataframe

mysql - 使用起始日期和截止日期过滤记录

php - 如何自动注销 Laravel 中所有设备的所有用户?

php - Encrypter.php 中未定义函数 openssl_encrypt()

python - 如何修改 'date'变化的时间(00 :00:00) in an index in Pandas dataframe?