这里#MAMASITENCPI表记录数量大概一千万,#MOTHERIDT3M表记录数量1万,在两个表的MAMAID和MOTHER_ID上建有非聚集索引查询语句如下:
SELECT A.*,'T3M' AS CAMPAIGNID,'AAA' AS AMOUNTCATEGORY
FROM #MAMASITENCPI A
WHERE A.MAMAID IN (SELECT MOTHER_ID FROM #MOTHERIDT3M)执行计划如图:
http://hi.csdn.net/space-3409307-do-album-picid-449367-goto-down.html发现性能主要耗费在 索引查找(49%) 和 RID查找(51%)上,具体情况如图
http://hi.csdn.net/space-3409307-do-album-picid-449368.html
http://hi.csdn.net/space-3409307-do-album-picid-449369.html
SELECT A.*,'T3M' AS CAMPAIGNID,'AAA' AS AMOUNTCATEGORY
FROM #MAMASITENCPI A
WHERE A.MAMAID IN (SELECT MOTHER_ID FROM #MOTHERIDT3M)执行计划如图:
http://hi.csdn.net/space-3409307-do-album-picid-449367-goto-down.html发现性能主要耗费在 索引查找(49%) 和 RID查找(51%)上,具体情况如图
http://hi.csdn.net/space-3409307-do-album-picid-449368.html
http://hi.csdn.net/space-3409307-do-album-picid-449369.html
解决方案 »
- 谁能介绍一下SQL SERVER 2005数据备份的思路
- 大家好,我是新人来报道!
- 有没有办法在case...then 后面加入插入记录的语句,或有什么方法可以代替完成?
- 一个.sql文件中建立多个存储过程怎么做?
- 菜鸟问一个SQL查询的写法?
- 存储过程的参数可以传递键值队列吗?
- 直接在sql 数据库中如何执行一次性更改一个表中的某些字段的值?
- 这样的sql语句怎么写呢
- Sql2000能不能通过LDF文件找回数据库文件
- 如何查询学生没在选课表里的课程,要求查询出的学生名和没选的课程名在一张表里?
- sql里如何把一个数据库里数据导到另一个数据库中去?
- 又来提个问题, 发现喜欢上提问题了, 能学到很多东西..
FROM #MAMASITENCPI A ,#MOTHERIDT3M B
WHERE A.MAMAID =B.MOTHER_ID
改连接不行
FROM #MAMASITENCPI A , #MOTHERIDT3M b
WHERE A.MAMAID = b.MOTHER_ID
多谢,已经试过了,不行!
我有一个类似的查询 SELECT A.*,'T3M' AS CAMPAIGNID,'AAA' AS AMOUNTCATEGORY
FROM #MAMASITENCPI A
WHERE A.MAMAID IN ( SELECT MAMAID
FROM #CALLLOGNCPI
WHERE CAMPAIGNID='T3M'
AND MANUFACTORID='WYL')其中这个IN的结果集比上面#MOTHERIDT3M这个结果集要大的多,反而很快(其中#MAMASITENCPI表示用的是一个表)
WHERE A.MAMAID IN ( SELECT MAMAID
FROM #CALLLOGNCPI
WHERE CAMPAIGNID='T3M'
AND MANUFACTORID='WYL'
)
这个查询的执行计划如图:
http://hi.csdn.net/space-3409307-do-album-picid-449385.html
如果慢,如果索引没问题的话,更新一下统计信息,
如果还是机器本身哪优化的不好.
SQL 2000、2005、2008
SELECT A.*,'T3M' AS CAMPAIGNID,'AAA' AS AMOUNTCATEGORY
FROM #MAMASITENCPI A
INNER HASH JOIN
#MOTHERIDT3M B
ON A.MAMAID=B.MOTHER_ID