1 つのテーブル パケット
パケットには 2 つのフィールド id と total が含まれ
ており、どちらも bigint 長さ 20 であり、主キー
のみ id は
すべてのレコードで自動インクリメントです total = id
私は 10000 レコードを取得しました id = 1 - 10000 と total = 1 - 10000
私は2つのほぼ同一のクエリを取得しました。1つは非常に長いロード時間で、もう1つはほぼ瞬時に完了します。
非常に長いロード時間:
@i = 0 に設定します。
SELECT *
FROM パケットを p1
WHERE p1.total in ( SELECT p2.total
FROM パケットを p2 として ( ( @i := ( @i + 1 ) )
非常に短いロード時間:
@i = 0 に設定します。
SELECT *
FROM パケットを p1
WHERE p1.id in ( SELECT p2.id
FROM パケットを p2 として ( ( @i := ( @i + 1 ) )
これは、id と total の値が同じ場合に発生します。