7 回答
TA贡献1828条经验 获得超4个赞
1. in语句影响性能,换成别的试试.
2. 尽量避免在where子句中对字段进行函数操作,否则将导致全表扫描。
3. 建议你分段执行看看到底哪一段代码耗时多.
例如With 那一块执行一次. 然后Select 那一段执行一次. 看看具体耗时比较长的是在哪一段.
然后再慢慢排查是因为哪个where条件导致时间变长.
TA贡献1891条经验 获得超3个赞
1、建索引原则,一般根据所查询的条件或关联的条件来建,如ZbsUserInfo:
ZUser_AddTime,ZUser_StayTotalSecs,Sp_Id,ZUser_Int1 这些列
可能会是这样子的
CREATE NONCLUSTERED INDEX [索引名] ON [dbo].[ZbsUserInfo]
(
ZUser_AddTime,
ZUser_StayTotalSecs,
Sp_Id,
ZUser_Int1
)
INCLUDE (
ZUser_RefererUrl,
ZUser_Id,
ZUser_Key,
ZUser_SousuoKeyword,
ZUser_BMobile,
ZUser_Mobile,
........
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
这种手动建索引。
2、如果你使用的是MsSql2008及以上的版本就更好办了MSSMS提供了一个方案自动提示你要建什么索引非常方便
查询->包括实际的执行计划,点击一下就执行你人慢SQL语句吧
下面为:结果、消息、执行计划
答案就是执行计划中会显示为“缺少索引(...”右键-》缺少索引详细信息
- 7 回答
- 0 关注
- 495 浏览
添加回答
举报