MySQL --version是5.7.18
优化查询的正确方法是什么:
select id,name from mytable where a - b > 0
mytable就像
id
- 主键,增量,大整数name
- varchar(255)a
- 整数,无符号,10 b
- 整数,无符号,10 向a
和b
列添加索引会有帮助吗?我应该只添加第三列a_minus_b
,对其进行索引,然后每次都要小心更新它,还是有更好的方法?
答案 0 :(得分:2)
您可以使用生成的列,然后使用索引:
alter table mytable add column abdiff int generated always as (a - b);
create index idx_mytable_abdiff on mytable(abdiff);
注意:此类型使用int
。你可以指定你喜欢的任何类型的差异。