日期:2014-05-17  浏览次数:20517 次

请问一下sql 语句怎么优化?
请问各位这条sql 语句要怎么优化,数据量大小依次为 ProductInfo,Users,ProRec,三表之间的关系:ProductInfo 引用Users 表的id,Prorec引用ProductInfo 的id,现在查询的时候很慢。数据量也很大。请教一下各位要怎么优化一下如下的sql语句
select top 9 pr_id,pr_pid,pr_title,pr_indus1,pr_indus2,pr_indus3,pr_ptype,pr_priceset,pr_isspot,pr_commend,pr_sort,pr_addtime,
pr_daynum,pr_status,user_username from ProRecommend inner join ProductInfo on product_id=pr_pid inner join UsersInfo 
on user_id=product_usernumber
SQL 性能优化 select 行业数据

------解决方案--------------------
在连接字段加上索引
------解决方案--------------------
有RID查找(覆盖索引)和表扫描,可以在这两个表上建立主键看看性能会不会提升。
------解决方案--------------------
索引不恰当,都出现RID查询了。
------解决方案--------------------
实际查询时,应该通常有加where [条件]的吧?

在where [条件]的字段上建索引.
------解决方案--------------------
这个没有任何条件,只有top9
那么最外层的的表肯定要用到表扫描,在表扫面的那个表上建立索引是没有意义的
出现RID查找是因为usersinfo上没有主键,可以创建主键

如果表ProRecomend中有的数据在和productinfo,userinfor关联时都有数据,那么就可以
先把top9选出来放在表变量中,之后再做关联查询,否则会出现,关联不到productinfo和usersinfo的数据

------解决方案--------------------
--你的执行计划中没有TOP啊?
SELECT TOP 9
        pr_id ,
        pr_pid ,
        pr_title ,
        pr_indus1 ,
        pr_indus2 ,
        pr_indus3 ,
        pr_ptype ,
        pr_priceset ,
        pr_isspot ,
        pr_commend ,
        pr_sort ,
        pr_addtime ,
        pr_daynum ,