我正在对大约250万个数据运行一个sql查询,但它计算的答案非常慢。有没有办法让查询快速计算出特定的答案。
我的查询是
SELECT COUNT(FarmerName) AS Total_Number_Of_Farmers
FROM try
WHERE FarmerName <> '-'"
答案 0 :(得分:3)
尝试'FarmerName'上的索引
CREATE INDEX FarmerNameIndex
ON try (Farmername)
另外,如果此字段为NVarchar
,请将其更改为varchar
,或使用WHERE FarmerName <> N'-'"
答案 1 :(得分:1)
通常,在SSMS中使用“查询执行计划”选项。这将建议您错过索引。虽然建议的遗漏索引并不总是值得信赖,但通过查看执行计划,您可以轻松找出创建索引所需的列。尝试尽可能减少索引扫描和表扫描。尽可能将它们转换为索引搜索。这将大大提高性能。
对于您的查询,正如@ElectricLlama建议的那样,应用'&lt;&gt;'会有额外的负担。使用'='总是更好,这样它就可以利用该列的索引。
答案 2 :(得分:0)
create INDEX FarmerNameIndex
ON try (Farmername)
然后执行上面写的相同查询。
select COUNT(FarmerName) Total_Number_Of_Farmers
FROM try
where FarmerName <> '-'"
注意:尝试将数据类型设置为父名称的必需小。