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

怎样优化此sql语句
select s1,sfzhm ,xm,xb,csrq,''ryzp from page_person where s3=1 and sfzhm in (
select sfzhm from page_czrkgl_jtcy where gridconto in (
select gridconto from page_czrkgl_jtcy where s3=1 and sfzhm='320422196909204606' and hjbh='320400000000'
) and hjbh='320400000000'
)

说明:page_czrkgl_jtcy 表中有405万数据,page_person表中有409万数据,执行起来慢的要死。请问如何优化能快速查出想要得到的结果。

------解决方案--------------------
1.要对sfzhm和hjbh建索引
2.用inner join 取代in (    )操作。
------解决方案--------------------
SELECT  s1 ,
        sfzhm ,
        xm ,
        xb ,
        csrq ,
        '' ryzp
FROM    page_person   --409W
WHERE   s3 = 1
        AND sfzhm IN ( /*sfzhm 上建立索引*/
        SELECT  sfzhm
        FROM    page_czrkgl_jtcy  --405W
        WHERE   gridconto IN ( SELECT   gridconto /*gridconto 上建立索引*/
                               FROM     page_czrkgl_jtcy
                               WHERE    s3 = 1
                                        AND sfzhm = '320422196909204606'
                                        AND hjbh = '320400000000' )
                AND hjbh = '320400000000' )

------解决方案--------------------
贴执行计划,看看问题在哪里
------解决方案--------------------

select pp.s1,pp.sfzhm ,pp.xm,xb,pp.csrq,''ryzp 
from page_person pp
inner join page_czrkgl_jtcy pc on pp.sfzhm =pc.sfzhm 
inner join page_czrkgl_jtcy pj on pc.gridconto=pj.gridconto and pp.s3=pj.s3
      on pc.hjbh=pj.hjbh 
where pp.s3=1 and pj.sfzhm='320422196909204606' and pc.hjbh='320400000000'


------解决方案--------------------
引用:
引用:
在你的查询界面按ctrl+l,然后把界面下方的图片截图出来我已经取消执行了,5分钟都没查出来,已经没耐心了,下面的是这个:--用户取消了查询。