2011-12-21 19 views
0

MySQLビューをODBCを介してMS Accessにリンクしましたが、速度が遅いです。基本的なMySQL SELECTクエリが極端に遅く実行中

これは、2つの他の選択肢を比較して、最初の選択肢に固有のレコードを見つける単純な選択項目です。

SELECT `contacts_onlinedonors`.`contactkey` AS `contactkey` 
FROM (`hal9k3-testbed`.`contacts_onlinedonors` 
    LEFT JOIN `hal9k3-testbed`.`contacts_offlinedonors` 
     ON((`contacts_onlinedonors`.`contactkey` = 
     `contacts_offlinedonors`.`contactkey`))) 
WHERE Isnull(`contacts_offlinedonors`.`contactkey`) 

低速クエリログでは、15億回の検証後に34,000行が返されます。ベーステーブルにはわずか20万人しかいません。何が一体?

"contactkey"フィールドは、明らかにテーブルのインデックスです。

+1

問題は「私はMySQLビューをODBC経由でMS Accessにリンクしました」と考えられます。 MySQLクエリを直接実行すると遅くなりますか? – Corbin

+2

そして、タイトルは基本的に言った...クエリにEXPLAINを実行します。 –

+0

contactkeyは、テーブルオフラインまたはオンラインのインデックスです。 –

答えて

2

まず、このクエリを「説明する」ことです。 は、アイデアは、MySQLサーバは、それが使用されているインデックス、やって、そして必要なインデックスを追加するか、それがインデックスを使用できるようにクエリを書き換えているかを把握することですhttp://dev.mysql.com/doc/refman/5.0/en/explain.html

を参照してください。

関連する問題