私は2つのテーブルticket_dataとnps_dataを持っています。MySQLは非常に遅く参加し、usuallは永久にハングします
ticket_dataは一般的なITの問題情報を保持し、nps_dataはユーザーのフィードバックを保持します。 テーブルの基本的な考え方は、
ticket_dataテーブルです。 aprox。 1,500,000行:30フィールド:ticket_number、logged_date、logged_team上 指数、resolution_date
|ticket_number | logged_date | logged_team | resolution_date | | I00001 | 2017-01-01 | Help Desk | 2017-01-02 | | I00002 | 2017-02-01 | Help Desk | 2017-03-01 | | I00010 | 2017-03-04 | desktop sup | 2017-03-04 |
は明らかに他のフィールドがたくさんありますが、これはImは
nps_dataテーブルで およそ10mlの液体フッ化水素を圧入83,000行を作業です:10のフィールド:
|ticket_number | resolving team| q1_score| | I00001 | helpdesk | 5 | | I00002 | desktop sup | 0 | | I00010 | desktop sup | 10 |
ticket_number 指数私は、単純なクエリを実行するときのような
select a.*, b.q1_score from (select * from ticket_data where resolution_date > '2017-01-01') a left join nps_data b on a.ticket_number = b.ticket_number
クエリは永遠に実行され、私がそれを言うとき、私は10分後にクエリを停止することを意味します。 は、しかし、私は
がselect * (select * from ticket_data where resolution_date > '2017-01-01') a left join ticket_details b on a.ticket_number = b.ticket_number
クエリを実行するのに約1.3秒かかり、次のクエリを使用して、1,000,000以上の行を持つticket_detailsと呼ばれる表、とticket_data参加するためにクエリを実行する場合。
申し訳ありませんresolution_dateのインデックスが作成され、そのサブクエリの実行に1秒未満がかかります – user2220694
あなたはどのDBMSを使用していますか?また、EXPLAINを実行してクエリの実行計画を確認しましたか? –
また、 'nps_data'の中に膨大な数の行があり、クエリプランナーが何とかふるい落としようとしているように、テーブル(Postgresを使用している場合)を真空にすることもできます。 –