:: DEVELOPER ZONE
多くのテーブルが含まれる複雑なクエリを使用していて、それがレコードを返さない場合、以下の手順でクエリの問題を見つける必要があります。
EXPLAIN でクエリをテストし、明らかに問題と思われる箇所があるか確認する。 See 項5.2.1. 「EXPLAIN 構文(SELECT に関する情報の取得)」。
WHERE 節で使用されるフィールドだけを選択する。
レコードが返るまで、クエリから 1 つ 1 つテーブルを削除する。
テーブルが大きい場合に有効なのは、クエリで LIMIT 10 を使用する方法である。
クエリから最後に削除されたテーブルに対してレコードが一致したカラムに、 SELECT を実行する。
FLOAT または DOUBLE カラムを小数と比較している場合、'=' は使用できない。浮動小数点の値は正確な値ではない。この問題は大部分のコンピュータ言語で共通。
たいていの場合、FLOAT を DOUBLE に変更すると問題は解決する。
See 項A.5.7. 「浮動小数点比較の問題」。
それでも問題が解決できない場合は、mysql test < query.sql で実行できる小さなテストを作成して、問題を表示する。
mysqldump --quick database tables > query.sql で、テストファイルを作成できる。エディタでファイルを開き、数が多ければいくつかの挿入行を削除する。そして、ファイルの最後に SELECT ステートメントを追加する。
まだ問題が残っているかどうか、以下の方法でテストしてください。
shell> mysqladmin create test2 shell> mysql test2 < query.sql
mysqlbug を使用して、テストファイルを汎用 MySQL メーリングリストに投稿してください。
See 項1.7.1.1. 「MySQL メーリングリスト」。
© 1995-2005 MySQL AB. All rights reserved.
