がここに私のクエリの速度と構造データに影響を与えると思わない:MySQLクエリに時間がかかります。私は、クエリの多くのバリエーションを試してみた、と何も、そのまま
SELECT *
FROM gmm_sql as a
LEFT JOIN usds as b ON a.dp_id = b.dp_id
LEFT JOIN usdsown as c ON b.dp_id = c.dp_id
WHERE a.comm like '%tree%'
- gmm_sql: 21フィールドを。すべてのフィールドvarchar()は20〜255の範囲で混在しています。4,882レコード。
- usds: 7フィールド。すべてのフィールドvarchar()は20〜255の範囲で混在しています。304,713レコード。
- usdsown:フィールド。すべてのフィールドvarchar()は20〜255の範囲で混在しています。107,606レコード。
私は手動で一致があることを確認しました。私はこれらのクエリテストを実行するためにMySQL Workbenchを使用しています。クエリはちょうど10分間実行し続け、停止しません...
私は何かを真剣にやっていますか?ここ
はEXPLAIN出力である:IDフィールドがインデックスされると仮定すると
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE a ALL NULL NULL NULL NULL 3973 Using where
1 SIMPLE b ALL dp_id NULL NULL NULL 304345
1 SIMPLE c ALL NULL NULL NULL NULL 105711
フィールドがすべてvar_charsの場合、それはおそらく良いデザインではありません。インデックスを作成しましたか? – Stevo
質問に「EXPLAIN」の出力を添付してください:http://dev.mysql.com/doc/refman/5.0/en/explain.html – Mchl
私はEXPLAINの出力を見ることから始めます。これらの結合は、それらのdp_id列に索引がない場合に非常に高価になります。 –