首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >order by子句中有一个可以为空的索引列是否会影响MySQL查询性能?

order by子句中有一个可以为空的索引列是否会影响MySQL查询性能?
EN

Stack Overflow用户
提问于 2018-08-16 03:53:23
回答 1查看 44关注 0票数 0

我有一个包含超过一百万行的表和一个执行良好的select查询,直到我不得不进行模式更改,使order by子句中使用的列接受空值。该列一直被编入索引。唯一的变化是它现在允许空值。

进行更改后,查询性能显著下降,导致相同流量的CPU峰值增加了30倍。

order by子句中只有一列。类似于order by id desc,其中id是一个无符号的大整数,并被索引并缺省为NULL

删除这个列上的索引可以解决这个问题,但是我还不能理解导致这个问题的根本原因。我

知道可能发生了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 04:11:04

在order by子句中有一个可以为空的索引列是否会影响MySQL查询性能?

是的,确实如此。

如果可能,

将列声明为非NULL。它可以更好地使用索引,并消除测试每个值是否为NULL的开销,从而使SQL操作更快。您还可以节省一些存储空间,每列一位。如果您确实需要在表中使用空值,请使用它们。只需避免在每一列中都允许空值的缺省设置

https://dev.mysql.com/doc/refman/5.5/en/data-size.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51865533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档