优化mysql-在这种情况下索引会改进吗?

f0ofjuux  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(343)

列alo为tinytext(平均长度:两个字符)
我最常问的是

select * from table where .... order by alo=''

我在alo上做索引会更快吗?
alo的确切内容并不重要—排序只基于alo是否为空的问题。
为什么它不能提高速度?

swvgeqrz

swvgeqrz1#

我想我们只是在谈论

select * from table where .... order by alo=''

案例1:没有索引。将始终扫描整个表。
案例二:某件事 WHERE 可能需要索引。那么这个索引可能会有所帮助。
案例3: alo 在报告中没有提到 WHERE . 索引 alo 不会有帮助的。当索引列隐藏在函数中时,mysql不能使用索引。在这个查询中, alo='' 实际上是一个函数调用。
ORDER BY alo 可能需要 INDEX(alo) . 它也会有类似的结果。嗯,实际上 alo='' 在非空格之后排序空格。所以你可能需要 ORDER BY alo DESC 先得到空白。此外, NULL 值可能会增加另一条皱纹。
同时,还有另一个优化。。。不要使用 TINYTEXT ; 相反,使用 VARCHAR(..) 使用合适的max(原因与复杂查询中的temp表有关,可能与您的查询无关)此外,您不能索引任何类型的表 TEXT 列。

相关问题