关于大数据量查询

luckycrazy 2004-09-24 05:44:47
当在一个400w条以上数据的表中运行查询时,如果where中使用索引列和值比较作为筛选条件就比较快,和变量比较作为筛选条件就比较慢,为什么,如何解决?

例:
其中actiontime建立索引了

DECLARE @TheDate datetime
SELECT @TheDate = getdate()

SELECT actiontime,UserID
from flog
WHERE
--(ActionTime between dateadd(day,-1,getdate()) and getdate()) --***slow***
ActionTime between '2004-9-23' and '2004-9-24' --***fast***
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
luckycrazy 2004-09-24
  • 打赏
  • 举报
回复
好,多谢
pbsql 2004-09-24
  • 打赏
  • 举报
回复
关于常量、变量的问题:
http://search.csdn.net/Expert/topic/2605/2605466.xml?temp=.3390772

最后的总结:
SELECT SUM(quantity) AS quantity FROM test WHERE...
1.若WHERE 里用的是字段与常量比较,MSSQL会自动引用该字段上的索引;若用的是变量,MSSQL不会自动引用该字段上的索引而是根据聚集索引进行扫描
2.加上with(index(索引名))指定索引,即:
SELECT SUM(quantity) AS quantity FROM with(index(索引名)) test WHERE...
指定索引后,WHERE 里不论是常量还是变量,MSSQL都根据指定的索引进行扫描

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧