面试中有人问我类似的问题
该公司在SQL Server中具有以下表格:
SalesHeader
HeaderID INT PRIMARY KEY,
CustomerID INT NOT NULL,
SalesManagerID INT NOT NULL
SalesLine
SalesID INT PRIMARY KEY,
HeaderID INT NOT NULL,
ProductID INT NOT NULL,
ProductDiscount FLOAT NOT NULL
给出查询:
SELECT HeaderID FROM SalesHeader AS sh
WHERE 0.1 IN (SELECT ProductDiscount
FROM SalesLine AS sl
WHERE sh.HeaderID = sl.HeaderID)
问题与该查询的性能有关:在SalesLine
表的主键索引上将进行多少次查找?
如果SalesHeader
有10000行而SalesLine
有15000行,答案是什么?又为什么呢?如果SalesLine
有5000行怎么办?