我有以下配置:
基本上,我想做的是在表上使用where子句的select。问题是表有大约7亿个条目,查询需要很长时间。
您能指出一些关于在哪里优化查询或者我可以使用什么样的技术来提高性能的指针吗?
谢谢。
发布于 2011-10-05 14:58:10
使用索引是解决这一问题的标准技术。按照要求,下面是一些应该让您开始学习的提示:
发布于 2011-10-05 15:03:56
在这种情况下,我要做的第一件事是隔离出我返回的数据量是否是问题所在( i/o问题)。一种简单的非科学方法是将查询更改为只返回计数:
select count(*) --just return a count, no data!
from MyTable
inner join MyOtherTable on ...
where ...如果运行得非常快,它会告诉您索引是有序的(假设您的WHERE子句中没有子选择)。如果没有,则需要索引工作、WHERE子句或查询构造本身(连接正在完成等)。
一旦这是令人满意的,添加回您的SELECT子句。如果速度慢,则必须查看您的数据访问模式:
发布于 2011-10-05 15:15:15
我会运行Profiler来查找正在生成的确切查询。ORM可以创建少于最优的查询。一旦知道了查询,就可以在SSMS中运行它,并查看执行计划。这将为你提供关于你哪里有性能问题的线索。
有几件事情可能导致性能问题:
还有更多的(在写了很长的书之后,这个主题),但这应该足以让你开始在哪里看。
https://stackoverflow.com/questions/7663320
复制相似问题