0

このクエリの最適化を手伝ってくれる人はいますか?

SELECT
A,
B
FROM  tableAA
WHERE  (C IN (SELECT D
       FROM tableBB
       WHERE (E IN (SELECT F
                FROM tableCC
                WHERE (G='$selected')
                )
         )

       )
) AND (G=$SELECTED22)
ORDER BY
A; 

一方

TABLEAA : 100 万エントリ

TABLEBB : 2,200 万のエントリ

TABLECC : 7,900 万のエントリ

それは機能しますが、時間がかかりすぎます.30秒近くかかります

これを正す他の方法はありますか?

4

3 に答える 3

0

1)最初に、すべてのテーブルに主キーが含まれていることを確認します

3) A と B が既にインデックス化されていることを確認してください ~

SELECT A, B
FROM  tableAA
INNER JOIN tableBB with (nolock) on C=D //only if C and D doesnt contain and null value
//if there are null value, use left outer join
INNER JOIN tableCC with (nolock) on E=F //only if E and F doesnt contain any null value
//if there are null value, use left outer join
WHERE G='$selected'
ORDER BY A; 
于 2013-08-01T02:41:52.057 に答える