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