私は本当に大きな問題を抱えています。これは、50k +レコードのテーブルに由来します。私はまた、別のDB(同じサーバー)上の別のテーブルを持っているこのMySQLクエリを最適化するにはどうすればよいですか?
table_1
date | name | email | num_x | num_y
次のようになります。
このテーブルには、(あまり重要ではありません15かそこら以上の列)は、このようになります(+1ない重要な列):
table_2
name | comment | status
のtable_1は、新しいエントリを繰り返し、「名前」列の多くがあることを意味し、(それは他のプロジェクトで使用するための供給テーブルである)で毎日更新されます。これは意図されたものです。 table_2には、「名前」についてのコメントとステータスノートが含まれていますが、繰り返し「名前」はありません。
私は、これはいくつかの行...2010-11-19 | john.smith | [email protected] | 20 | 20
2010-11-19 | joel.schmo | [email protected] | 10 | 10
2010-11-18 | john.smith | [email protected] | 20 | 20
2010-11-18 | joel.schmo | [email protected] | 10 | 10
た場合、例えば、すべてのnum_x + NUM_Y> X.の合計だからのtable_1からすべての「名前」のを選択しますクエリを記述する必要が
..私は合計num_x + num_y> 50のすべての「名前」を見つける必要がありました。返信します john.smith | [email protected] | 80。他のDBからjohn.smithのステータスとコメントを返すこともできます。
私はうまく動作すると信じているクエリを書きましたが、それは永遠に実行するためには問題があります。私はまた、他のデータベースからレコードを正常に取得します(私は以下にリストされていません)。
SELECT
name,
email,
SUM(num_x + num_y) AS total
FROM
table_1
GROUP BY
name
HAVING
SUM(num_x + num_y) > 100
ORDER BY
total ASC
これについては良い方法がありますか?
ありがとうございました!
ディラン
'num_x + num_y'のインデックスがありますか? – thejh
私はそうではありません、正直言って私はそれがオプションであるかどうかはわかりませんでした。 :) – Dylan