多くのテーブルが含まれる複雑なクエリを使用していて、それがレコードを返さない場合、以下の手順でクエリの問題を見つける必要があります。
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 メーリングリスト」。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.