[英]Unexpected empty result set using limit with order by
我有一個包含數百萬條記錄的表,並且我每天運行一次此查詢超過500天,而最近它停止工作了。
該查詢如下所示:
SELECT id FROM table
ORDER BY column1 desc, column2 desc, column3 desc
LIMIT 522, 1
這將返回一個空的結果集。 但是,如果我將限制更改為小於500的任何值,它都可以正常工作。
如果我取消了限制並對該訂單執行COUNT(id),它將返回數百萬行表的計數。
我只能想象發生某種超時或錯誤。 如果order by
和limit
應該返回行(如果有的話)。
首先,檢查是否收到錯誤消息。 如果從應用程序進行調用,則需要檢查錯誤狀態。
如果超時,您可以考慮在table(column1 desc, column2 desc, column3 desc, id)
上添加索引。 這應該從根本上提高查詢的性能。
不確定它是如何發生的,但是在優化表之后它又開始工作了...
遠程診斷這些問題確實很困難,而且經常可以在MySQL日志中找到更多信息-這些對於診斷異常行為非常有用。
另外,嘗試像這樣運行查詢:
SELECT id FROM
(SELECT id FROM table
ORDER BY column1 desc, column2 desc, column3 desc) r
LIMIT 522, 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.