--数据量在130W左右select projectid,username,completestate,count(1) as amount from projectlink201209 where starttime between
'2012-10-29 00:00:00' and '2012-10-29 23:59:59' and len(username)>0 and len(username)<14 and
isnull(completestate,'') in ('C','S','Q') group by projectid,completestate,username
解决方案 »
- 远程连接sql server 2000的方法
- 今天MSSQLSERVER又报错,怎么回事啊?
- 虽然是马甲,但问的是个正经问题——想在一个 Excel 表中导入一个 SQL 2000 的表的所有记录,每当打开 Excel 时能自动获取最新数据,该怎么搞。
- 求SQL语法
- 数据库备份的SQL怎么写?我不想备份成.bak文件,而是备份成cyylsystem_Data和cyylsystem_log的sql怎么写
- 请问这个SQL语句是什么意思
- 触发器问题
- 从SQL2000中导出一个名为ZHOU的表到EXECL中的语句如何写?
- 怎样将一个指定的非备注型字段导出到文本文件中?(急急!!!50)
- 老问题 to大力(前两个表的数量相加再减去第三个表的数量)
- sql server 读取远程服务器上的CSV文件
- SQL语句如何写???
'2012-10-29 00:00:00' and '2012-10-29 23:59:59' and len(username)>0 and len(username)<14 and completestate in ('C','S','Q') group by projectid,completestate,username
那么语句能修改的地方 AND username <>''
AND LEN(username) < 14
AND completestate IN ('C', 'S', 'Q')
--修改的原则就是尽量不要再where 条件上面使用函数
使用了函数,这些条件就不可SARG了然后就是补上缺失的索引
username,
completestate,
Count(1) AS amount
FROM projectlink201209
WHERE starttime BETWEEN '2012-10-29 00:00:00'
AND '2012-10-29 23:59:59'
AND Len(username) > 0
AND Len(username) < 14
AND completestate IN ('C',
'S',
'Q')
GROUP BY projectid,
completestate,
username给starttime 、completestate加索引
给completestate加索引会走索引吗?
最后的条件没有必要判断 isnull,就像2楼那样。completestate 用 in 的话 估计也不会走索引,但这个应该还好吧 不会太慢啊,都在一个表里都没有连接查询。
你可以在completestate 字段加索引 我刚刚整了个例子 结果执行计划显示有索引查找这一步 证明还是走了索引的 哈哈
2、projectid、username、completestate加一个联合非聚集索引
3、更新表的统计信息