MYSQL正确的方法来索引调用条件的位置(myTable.a> myTable.b)

时间:2017-06-06 00:11:44

标签: mysql indexing laravel-5.3

MySQL --version是5.7.18

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

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

mytable就像

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

ab列添加索引会有帮助吗?我应该只添加第三列a_minus_b,对其进行索引,然后每次都要小心更新它,还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

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

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

create index idx_mytable_abdiff on mytable(abdiff);

注意:此类型使用int。你可以指定你喜欢的任何类型的差异。