1

1 秒間に 5,000 行ずつ増加している 1 つのテーブルを含む MYSQL データベースがあります。このテーブルが数十億のレコードに入ることが期待されます。現在、php にクエリ関数があります。

 $result =mysqli_query($con, "SELECT * FROM table WHERE  `data`='".$input."' LIMIT 0 , 30");

問題は、テーブルが大きくなればなるほど、最新のレコードをクエリするのに時間がかかることは明らかです。関数がタイムアウトするところまで。SQL から同じクエリを直接実行すると、同じことが行われます。

クエリ時間を短縮するために、このテーブルをクエリするより良い方法はありますか? これをスピードアップするために、最後のレコード、最初のレコード、およびその間の段階的なクエリから開始することは可能ですか?

また、より高速な代替手段があれば、私はphpを使用することに固執していません.

また、テーブルを複数のテーブルに分割し、複数の小さなテーブルで同時にクエリを実行する方がよいでしょうか?

4

3 に答える 3

3

ここではインデックスが非常に重要です。大きな違いがあります。また、正しく正規化されていることを確認してください。

もう1つの、より実践的なアイデアは、1つの大きなデータベースを持たないことです。ただし、後でクエリを実行するときに知っている基準に基づいて、それを多くの小さなものに分割します。たとえば、日付、最初の文字などです。この大きなデータベースを常に大きくするのは現実的ではありません。分割する必要があります。

もう 1 つの分割は、古いデータをより低速で大きなチャンクに格納することです。新しい使用済みデータを一時テーブルに保存します。

于 2013-07-14T21:58:13.880 に答える
1

このような大きなテーブルがあり、関心のある値が「最新」である場合、MySQLパーティショニングを使用してパフォーマンスを向上させることができます。詳細については、この記事を確認してください。

于 2013-07-14T21:58:44.410 に答える