私は理由はわかりませんが、このクエリは2つの結果があっても実行には時間がかかりすぎます。SQLクエリが長すぎます - 同じIDを持つ複数のAND
私がしようとしているのは、users c
テーブルのUID(プライマリキー)が他のすべてのテーブル(外部キー)のentity_id
と一致していることです。それが私がしなければならないことです。
私の主キーと一致する必要がある外来キーが多すぎるということが問題だと思います。
SELECT
f.field_fmno_value as fo,
fn.field_full_name_value as fullname,
c.mail as email,
t.field_type_value as persontype,
ti.field_title_value as persontitle,
sc.field_skill_code_value as skillcode,
sg.field_skill_group_value as skillgroup,
dn.field_department_value as deptt,
r.field_region_for_real_value as region,
cl.field_region_value as citylocation,
goc.field_goc_office_value as goc,
hu.field_hub_value as hub,
ge.field_gender_value as gender,
ft.field_full_tenure_value as tenure,
tsa.field_tenure_since_associate_value as tass,
b.category as category,
b.subcategory as subcategory,
b.section as industry,
b.title as title,
a.browser_platform, b.path, b.title, a.referer, a.time, a.id
FROM
track_da_files a, track_da_files_paths b, users c, field_data_field_region_for_real r,
field_data_field_fo f,
field_data_field_full_name fn,
field_data_field_type t,
field_data_field_title ti,
field_data_field_s_code sc,
field_data_field_s_group sg,
field_data_field_department dn,
field_data_field_region cl,
field_data_field_g_office goc,
field_data_field_hub hu,
field_data_field_gender ge,
field_data_field_full_ten ft,
field_data_field_ten_since_associate tsa
where a.pid = b.pid AND a.uid = c.uid AND a.uid <> 0
AND c.uid = r.entity_id
AND c.uid = fn.entity_id
AND c.uid = f.entity_id
AND c.uid = t.entity_id
AND c.uid = ti.entity_id
AND c.uid = sc.entity_id
AND c.uid = sg.entity_id
AND c.uid = dn.entity_id
AND c.uid = cl.entity_id
AND c.uid = goc.entity_id
AND c.uid = hu.entity_id
AND c.uid = ge.entity_id
AND c.uid = ft.entity_id
AND c.uid = tsa.entity_id
GROUP a.pid
ORDER BY 1 DESC
質問には(1)テーブルのテーブル定義と(b)クエリの説明プランを追加してください。また、(3)ハードウェアでの実行にはどれくらいの時間がかかりますか、(4)どのような時間が受け入れられるでしょうか?提供されるソリューションは、10%のスピードアップか90%のスピードアップを望んでいるかによって異なります。 – halfer
開始点として、これらのWHERE節のいくつかをANSIスタイルの結合に変更します。データベースオプティマイザがフィルタと結合が適切であることを理解するのに役立つと思います。 – halfer
ありがとうございます、私は私の質問に詳細を追加しました。 – Steve