現(xiàn)實中遇到過到這么一種情況:
在某些特殊場景下:進行查詢的時候,加了TOP 1比不加TOP 1要慢(而且是慢很多)的情況,
也就是說對于符合條件的某種的數(shù)據(jù),查詢1條(復(fù)合該條件)數(shù)據(jù)比查詢所有(符合該條件)數(shù)據(jù)慢的情況,
這種情況往往只有在某些特殊條件下會出現(xiàn),那么,就有兩個問題:為什么加了TOP 1 會比不加TOP 1慢?這種“特殊條件”是什么條件?
本文將對此情況進行演示和原理分析,以及針對此種情況采用什么方法來解決。
按照一貫風(fēng)格,先造一個測試環(huán)境:1000W+的數(shù)據(jù)
數(shù)據(jù)的特點為:
1,表中有一個狀態(tài)列BusinessStatus ,這個列的分布為1,2,3,4,5
2,表中有一個 業(yè)務(wù)ID列BusinessId , BusinessId列是呈遞增趨勢
CREATE TABLE TestTOP ( Id INT IDENTITY(1,1) primary key, BusinessColumn VARCHAR(50), BusinessId INT, BusinessStatus TINYINT, CreateDate DATETIME ) GO --5年的時間,一分鐘六條數(shù)據(jù)的數(shù)據(jù)頻率 DECLARE