我有两个表,分别是tbl_Small
和tbl_Large
。
这两个表都存储在 microsoft Azure 中,并从 microsoft SQL Server 查询。
-表1:Tbl_Small
CREATE TABLE tbl_Small
(
cola int
);
INSERT INTO tbl_Small VALUES(1234),(123),(34);
--1000 rows
-表2:tbl_Large
CREATE TABLE tbl_Large
(
ID bigint identity(1,1),cola int,colb int,colc varchar(100)
);
INSERT INTO tbl_Large(cola,colb,colc) VALUES(0,140,'A'),(150,200,'C'),(1000,15000,'D');
--30 million rows
我想通过在条件之间加入小表来获取大表的详细信息。
我的尝试:
- 在tbl_Small(cola)上创建了
NONCLUSTERED
索引。 - 在tbl_Large(cola)和tbl_Large(colb)上创建了
NONCLUSTERED
索引。
查询:
SELECT s.cola as [Input],l.cola,l.colb,l.colc
FROM tbl_Large AS l
INNER JOIN tbl_Small s ON s.cola BETWEEN l.cola and l.colb
注意:以上查询的执行时间超过10分钟。
编辑:按照回答所述,在所有列上添加了非聚集索引之后,我得到了以下执行计划。
执行时间:5分钟
DTU百分比图: