2 つの真に巨大なテーブル (どちらも 1 億行以上) を結合する MySQL データベース クエリの応答を高速化する必要があります。2 つの問題があります。1 つは、クエリが遅いことです。2 つ目は、結果セットのサイズは 0 行から数千行まで可能です。理想的には、クエリを高速化し、結果セットのサイズを (調整可能な) 最大値に制限したいと考えています。
テーブルや何かを分割するお気に入りの方法を誰かが持っていますか?どこでこれを達成できますか?
ここでアイデアを探しているだけです。
まず、 を使用explain
して、インデックスが使用されているかどうかを確認します。1 億行の場合でも、インデックスが適切に作成されたテーブルは非常に優れたパフォーマンスを発揮します。explain
何が言いたいのか理解するのに少し時間がかかりますが、それだけの価値があります。
それでも分割する必要がある場合は、 mysql partitioningを調べることをお勧めします。explain partitions
を使用し、クエリが少数のパーティションのみを調べていることを確認してください。
を使用して、結果セットのサイズを制限できますLIMIT
。
SELECT *
FROM YourTable
LIMIT 50;
レコード 1 ~ 50 を表示します
SELECT *
FROM YourTable
LIMIT 50, 50;
レコード 51 ~ 100 を表示します
クエリの高速化に関しては、より多くの情報が必要です。結果をページングする場合は、長いクエリを 1 回実行して結果をテーブルに配置し、そこから結果をページングします。