-1

現在、それぞれ約5〜6列の13のテーブルがあります。13 個のテーブルのうち、4 個のテーブルには 200,000 (20 万) を超える行があり、5 ~ 6 列に varchar(1000) 以上の値が含まれています。残りの 10 テーブルには、それぞれ varchar(1000) 以上の値を持つ 5 ~ 6 列の約 10000 行があります。3 つ以上のテーブルのデータを含むクエリを作成し、結果が 1000 行と 5 列になると予想される場合、クエリの実行にかなりの時間がかかります (30 分~2 時間)。

約 12GB の RAM と x86_64 x86_64 x86_64 GNU/Linux のシステムがあります。

クエリの実行時間を大幅に短縮する方法は何ですか?

select a.d_id, 
       a.d_n, 
       a.t_id, a.act, 
       a.pm, 
       b.d_t, 
       b.d_d, 
       b.pm, 
       b.mec_of_act, 
       b.d_g, 
       b.d_c, 
       c.n_id, 
       c.s_name, 
       c.s_status, 
       c.s_p, 
       c.dis 
from    d_tar a, 
       d_char b, 
       ct c, 
       c_int d, 
       d_s e,
       d_b f 
where   a.d_id=b.d_id 
&&      a.d_id=e.d_id 
&&      t_id='847' 
&&      a.d_id=f.d_id 
&&      d.n_id=c.n_id 
&&      (d.in_name=b.d_n 
          or d.in_name=e.snym 
          or d.in_name=f.b_name);
4

2 に答える 2

0

これは絶対に基本的なことなので、すでに行っていると思います。ただし、念のため、必ず my.ini ファイルでクエリ ログを設定し、インデックスが常に正しく設定されていないかどうかを確認してください。

log_queries_not_using_indexes = 1  
slow_query_log = 1
slow_query_log_file = "E:/wamp/logs/slowquery.log"
于 2013-10-11T08:39:21.220 に答える