簡體   English   中英

意外的空結果集(使用限制,按以下順序排序)

[英]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 bylimit應該返回行(如果有的話)。

首先,檢查是否收到錯誤消息。 如果從應用程序進行調用,則需要檢查錯誤狀態。

如果超時,您可以考慮在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM