Test the query with EXPLAIN
to check
whether you can find something that is obviously wrong. See
Section 7.2.1, “Optimizing Queries with EXPLAIN
”.
Select only those columns that are used in the
WHERE
clause.
Remove one table at a time from the query until it returns
some rows. If the tables are large, it's a good idea to use
LIMIT 10
with the query.
Issue a SELECT
for the column that should
have matched a row against the table that was last removed
from the query.
If you are comparing FLOAT
or
DOUBLE
columns with numbers that have
decimals, you can't use equality (=
)
comparisons. This problem is common in most computer
languages because not all floating-point values can be
stored with exact precision. In some cases, changing the
FLOAT
to a DOUBLE
fixes this. See Section A.5.8, “Problems with Floating-Point Comparisons”.
-
If you still can't figure out what's wrong, create a minimal
test that can be run with mysql test <
query.sql
that shows your problems. You can create
a test file by dumping the tables with mysqldump
--quick db_name tbl_name_1
...
tbl_name_n
>
query.sql. Open the file in an editor, remove some
insert lines (if there are more than needed to demonstrate
the problem), and add your SELECT
statement at the end of the file.
Verify that the test file demonstrates the problem by
executing these commands:
shell> mysqladmin create test2
shell> mysql test2 < query.sql
Attach the test file to a bug report, which you can file
using the instructions in Section 1.8, “How to Report Bugs or Problems”.