2011-08-05 3 views
1

カラムID(int)、数値(10進数)、および日付(intのみのタイムスタンプ)を持つテーブルがあります。何百万行もあります。 IDと日付にはインデックスがあります。大きなMySQLテーブルへの複数のクエリ

私のページの多くで、指定した日付範囲(各クエリごとに異なる範囲)の数値のリストをこの4〜5回クエリしています。

同様:

select number,date where date < 111111111 and date >111111100000

私はいくつかの異なるチャートの上に置かれるように、これらのデータセットを照会しています。 "Today vs Yesterday"、 "今月対先月"、 "今年対昨年"。

sql文で可能な限り大きな結果セットを照会し、自分のプログラミング言語を使用してソートされたスプライスされた配列を介してクエリをフィルタリングすると、これらの0.3秒のクエリが終了するのを待つよりも良いでしょうか?

これをスピードアップするために他にもできることはありますか?

+0

これまでの回答をありがとうございます。 私はそれに6つのグラフを持つページがあります。私は必要な線でグラフを埋めるために1〜200万行のデータテーブルを何度かクエリしなければなりません。私は大きなテーブルを経験していないので、何をすべきか分かりません。 5秒間のページ読み込み時間は避けられませんか? – Chris

+0

本当に遅いのを確認しましたか? –

+0

はい、元の質問の日付のクエリです。私は、このページのいくつかの異なる日付範囲のデータにいくつかのグラフを照会する必要があります。私は何年もの価値のあるデータ、1ヶ月分のデータ、1日分のデータ、1週間分のデータ、最後の週のデータ、最後の月のデータ、過去のデータ、過去3年間のデータなどを照会する必要があります。異なるグラフに対して。 – Chris

答えて

3

結果セットと実行速度によって異なります。この質問には究極の答えはありません。

実際にスピードアップが必要な場合は、結果をベンチマークして計算する必要があります。

しかし、それはより速くあなたが持って実行するクエリが発生することがありますがそれはあなたがなどのバグを含むことができ、あなたのコード内ですでに実装ロジック等

2

を実装します以外premature optimizationは避けるべきであることを心に留めておきますあなたがレコードの全範囲を読み込み、それをプログラム的に集計しようとするならば、メモリへの潜在的な影響について自問してみてください。

インデックスに基づくMySQLの最適化は、とにかく思い付くことができるものよりも優れている可能性があるので、悪い考えのように聞こえるかもしれません。

関連する問題