カスケード患者(250,000レコード)-患者属性(250,000レコード)-検査(1,000,000レコード)に3つのテーブルがあります患者:患者属性は1:N患者属性:検査は1:Nです
query1 は非常に高速です (0.000 秒):
SELECT examination.ID AS Eid
FROM examination
ORDER BY eid LIMIT 10000,50
query2 はまだ高速です (0.015 秒):
SELECT examination.ID AS Eid
FROM examination
JOIN `patient_attributes`
ON `examination`.`PATIENT_ATTRIBUTES_ID` = `patient_attributes`.`ID`
ORDER BY eid LIMIT 10000,50
query3 は非常に遅い (5.5 秒):
SELECT examination.ID AS Eid
FROM `examination`
JOIN `patient_attributes`
ON `examination`.`PATIENT_ATTRIBUTES_ID` = `patient_attributes`.`ID`
JOIN `patient` ON `patient_attributes`.`PATIENT_ID` = `patient`.`ID`
ORDER BY eid LIMIT 10000,50
この場合、簡単にするために結合は役に立ちません。後でこのクエリからビューを作成したいと思います。これらの結合は外部キーを介して結合され、常に 1 つのレコードがあるため、DB を除いてビュー内の未使用の列を省略し、未使用の結合を省略します。
クエリの無駄な結合を省略するために、クエリ3を高速化するためにdb構造に何かを設定する必要がありますか?
examination.ID is primary key,
examination.PATIENT_ATTRIBUTES_ID is foreign key,
patient_attributes.ID is primary key,
patient_attributes.PATIENT_ID is foreign key,
patient.ID is primary key
show index from patient
Table Non_uniq Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type
patient 0 PRIMARY 1 ID A 230077 NULL NULL BTREE
patient 1 RefMEMO1001 1 ANAMNESIS_MEMO_ID A 80 NULL NULL YES BTREE
patient 1 REF17 1 RACE_ID A 4 NULL NULL YES BTREE
patient 1 REF5 1 CARD_INDEX_ID A 6 NULL NULL BTREE
show index from patient_attributes
Table Non_unique Key_name Seq_in_idx Col.name Collation Cardinality Sub_part Packed Null Index_type
patient_attributes 0 PRIMARY 1 ID A 1857048 NULL NULL BTREE
patient_attributes 1 RefPATIENT1021 1 PATIENT_ID A 619016 NULL NULL BTREE
patient_attributes 1 RefMEMO1081 1 SYMPTOMS_MEMO_ID A 2 NULL NULL YES BTREE
show index from examination
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type
examination 0 PRIMARY 1 ID A 905353 NULL NULL BTREE
examination 0 I_EXAMINATION_GUID 1 UNIQUE_GUID A 905353 NULL NULL BTREE
examination 0 I_PATIENT_GUID 1 UNIQUE_GUID A 905353 NULL NULL BTREE
examination 1 RefSTATION621 1 STATION_ID A 2 NULL NULL YES BTREE
examination 1 I_EXAMINATION_STATUS 1 STATUS A 6 NULL NULL BTREE
examination 1 I_EXAMINATION_CREATED 1 CREATED A 181070 NULL NULL BTREE
examination 1 I_EXAMINATION_STARTED 1 STARTED A 181070 NULL NULL BTREE
examination 1 RefPATIENT_ATTRIBUTES1031 1 PATIENT_ATTRIBUTES_ID A 905353 NULL NULL BTREE