小编MyS*_*bie的帖子

MySql Order by isnull() 性能问题

我下面的 sql 用于列出 10 天前添加的股票。Order by isnull(Price) 被使用,这样没有任何价格的股票仍然会被列出。

AddDate 和 Price 有一个索引。

SELECT Id, Price FROM tblStock
where AddDate >= date_sub(curdate(),interval 10 day)
order by isnull(Price), Price asc limit 50
Run Code Online (Sandbox Code Playgroud)

解释 sql 显示它没有使用价格指数。所以我试图改进查询并提出了以下 sql

SELECT Id, Price FROM tblStock
where AddDate >= date_sub(curdate(),interval 10 day)
and Price is not null
order by Price asc limit 50
Run Code Online (Sandbox Code Playgroud)

新的 sql 运行得更快,并且解释显示它使用价格索引,但问题是永远不会选择具有空值的价格。

寻找有关如何解决此问题的任何意见或建议。谢谢。

mysql performance index null order-by

2
推荐指数
1
解决办法
4674
查看次数

标签 统计

index ×1

mysql ×1

null ×1

order-by ×1

performance ×1