用LEFT JOIN查询今年之前的数据很很快,查询今年是数据却很慢? a_info 被其它会话更新中、有锁定,子查询有比较多的等待。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可能原因:1、阻塞,即有其他会话在修改这个表的这部分数据,导致锁住数据。这种情况下,如果频繁发生,尝试加with nolock检测,如果加了就很快,那问题基本上是这个了。2、数据分布不平均,到时索引上的统计信息不准确,对于非常大的表(没有标准),统计信息的更新阈值较高,500+(表总数的)20%才触发更新,这个可以手动更新一下表或者索引的统计信息(索引的更新直接重建索引即可),再进行查询,如果很快,那问题可能是这个。常见的问题就这两个,还有一些比较啃爹的比如做了分区,而分区的数据刚好在别的文件组,这个文件组又在比较慢的盘上,或者索引碎片等问题,问题很多,最好对比一下快慢两次查询的执行计划 --建议改成:SELECT t1.useridFROM a_info t1 (NOLOCK) LEFT JOIN yh_info t2 (NOLOCK) ON t1.UserID=t2.UserIDWHERE t1.syear=2015 版主提醒了我,原来在去年年底把原来sql2000移到 sql2005上所以会出现这个问题,我把所有的索引删除了,然后重新建索引就好了。但mdb文件却大了很多,不知有什么影响? 今天正好在京东上买书看到黄大师的书《SQL Server 性能优化与管理的艺术》,看了介绍很好,买下,希望能从你的著作中学到你的精髓。 楼主这样呢?select a.userid FROM a_info a where syear='2015' and exists(select 1 from yh_info b where a.UserID=b.UserID ) sql server express2005版有怎么用图形界面 请教一个关于日期统计的问题 问个sql语句,类似exist 字符串分割问题 急 急 在线等 求助:SQL Server在打开表属性的时候报Err8115 Sql语句执行问题。 这样一个存储过程怎么写? 统计问题 望高手给个解决方法 如何把ACCESS数据库导入SQL SERVER MSSQLSERVER备份数据库时可不可以加上密码? 请教一个merge 语法的 错误原因 为SqlServer 添加一个登陆账号,这个账号可以修改自己的密码应该赋予什么权限
1、阻塞,即有其他会话在修改这个表的这部分数据,导致锁住数据。这种情况下,如果频繁发生,尝试加with nolock检测,如果加了就很快,那问题基本上是这个了。
2、数据分布不平均,到时索引上的统计信息不准确,对于非常大的表(没有标准),统计信息的更新阈值较高,500+(表总数的)20%才触发更新,这个可以手动更新一下表或者索引的统计信息(索引的更新直接重建索引即可),再进行查询,如果很快,那问题可能是这个。
常见的问题就这两个,还有一些比较啃爹的比如做了分区,而分区的数据刚好在别的文件组,这个文件组又在比较慢的盘上,或者索引碎片等问题,问题很多,最好对比一下快慢两次查询的执行计划
--建议改成:
SELECT t1.userid
FROM a_info t1 (NOLOCK)
LEFT JOIN yh_info t2 (NOLOCK) ON t1.UserID=t2.UserID
WHERE t1.syear=2015
版主提醒了我,原来在去年年底把原来sql2000移到 sql2005上所以会出现这个问题,我把所有的索引删除了,然后重新建索引就好了。但mdb文件却大了很多,不知有什么影响?
今天正好在京东上买书看到黄大师的书《SQL Server 性能优化与管理的艺术》,看了介绍很好,买下,希望能从你的著作中学到你的精髓。
select a.userid FROM a_info a where syear='2015'
and exists(select 1 from yh_info b where a.UserID=b.UserID )