这是我坚持的查询:
SELECT *
FROM customers
WHERE salesmanid = @salesrep
OR telephonenum IN (SELECT telephonenum
FROM salesmancustomers
WHERE salesmanname = @salesrepname)
ORDER BY customernum
很慢,我的CPU压缩率为99%。我知道索引会有所帮助,但不确定它是什么类型,或者它应该是2个索引还是包含两个列的1个。
答案 0 :(得分:0)
查看查询执行计划,看看是否有任何表扫描正在进行。这将帮助您确定所需的索引。
答案 1 :(得分:0)
可能每个列都有三个索引。这假设您的查询相对于表的大小都是非常有选择性的。
如果您告诉我们您的表模式以及现有索引的详细信息(如果您没有另外指定,您的PK将默认获得聚簇索引)以及有关表/选择性大小的一些详细信息,这将有所帮助。 / p>
<强>客户强>
SalesmanId
TelephoneNum
<强> SalesmanCustomers 强>
SalesmanName
答案 2 :(得分:0)
我认为除了@Martin建议的列之外,还需要 CustomerNum 的索引,因为它在order by子句中使用。
如果您有大量记录,OrderBy需要花费大量时间。您也可以尝试在没有orderby的情况下运行查询,并查看需要多长时间。