请问一下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
------解决方案--------------------在连接字段加上索引
------解决方案--------------------有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 ,