SELECT
 *
FROM (
SELECT
 ROW_NUMBER() OVER (ORDER BY NAME_KANJI,
                              NAME_KANA,
                              JIGYOBU_CD,
                              SHOP_CD,
                              TEL_H,
                              TEL_O,
                              TEL_MOBEL,
                              EMAIL,
                              KAIIN_NO ,
                              USER_KUBUN ,
                              UPDATE_DATE ,
                              KAIIN_ID ) AS CT,
      NAME_KANJI,
      NAME_KANA,
      JIGYOBU_CD,
      SHOP_CD,
      TEL_H,
      TEL_O,
      TEL_MOBEL,
      EMAIL,
      KAIIN_NO ,
      USER_KUBUN ,
      UPDATE_DATE ,
      KAIIN_ID
FROM (
     SELECT
            NAME_KANJI,
           NAME_KANA,
           JIGYOBU_CD,
           SHOP_CD,
           TEL_H,
           TEL_O,
           TEL_MOBEL,
           EMAIL,
           KAIIN_NO ,
           USER_KUBUN ,
           UPDATE_DATE ,
           KAIIN_ID
         FROM KOKMSTFX KOK
     WHERE JIGYOBU_CD = 'SW'
       AND RECODE_KUBUN <> 'D'
        AND (USER_KUBUN = '00' OR (USER_KUBUN = '30' AND NEWUSER_KUBUN <> '00'))
       AND (SELECT COUNT(JIGYOBU_CD)
               FROM KOKMSTFX KOK1
                WHERE JIGYOBU_CD = 'SW'
                  AND RECODE_KUBUN <> 'D'
                  AND (USER_KUBUN = '00' OR (USER_KUBUN = '30' AND NEWUSER_KUBUN <> '00'))
                  AND NAME_KANA = KOK.NAME_KANA
                  AND NAME_KANJI = KOK.NAME_KANJI ) > 1
       )
   ORDER BY NAME_KANJI,
             NAME_KANA,
             JIGYOBU_CD,
             SHOP_CD,
             TEL_H,
             TEL_O,
             TEL_MOBEL,
             EMAIL,
             KAIIN_NO ,
             USER_KUBUN ,
             UPDATE_DATE ,
             KAIIN_ID )
WHERE CT BETWEEN 1 AND 1000
以上这段SQL在50多万的表下面出结果需要1个多小时,是否SQL语句在哪方面写的不合理?
求高人赐教

解决方案 »

  1.   

    1。SQL查询不建议用 不等于
    2。WHERE的条件判断是从右往左的 所有把带‘=’的写在最右边 会快很多
    3。尽量不要使用BETWEEN
    4。大于或小于号  会破坏索引  所以不推荐使用 
    5。OR 也尽量不实用    以上的建议  完全有方法代替  请楼主  去参考一些东西   由于在公司  不方便帮您做修改  见谅!有疑问请加我QQ聊: 330589751  注明身份
      

  2.   

    这句sql如果不是你写的,
    那就按照要求,自己从新写个出来~