我想搜索" law"来自三个表tbl_books
,tbl_books_author
和tbl_books_subject
。我正在运行以下查询。
SELECT *
FROM tbl_books p, tbl_books_author d, tbl_books_subject m
WHERE p.title = 'law'
OR d.author = 'law'
OR m.subject = 'law'
LIMIT 0,30;
当我运行此查询时,它显示在顶部"显示行0 - 29(总共1759260,查询花了5.1206秒)"。你能解释一下为什么会这样吗。
这是什么原因?
答案 0 :(得分:0)
正如已经指出的那样,你正在做一个笛卡尔积,即将第一张表中的所有记录与第二张表和3d表中的所有记录相匹配。
您可能有一些与表相关的外键,因此您的查询应如下所示:
SELECT *
FROM tbl_books p
INNER JOIN tbl_books_author d ON inner_join_condition1
INNER JOIN tbl_books_subject m ON inner_join_condition2
WHERE p.title = 'law'
OR d.author = 'law'
OR m.subject = 'law'
LIMIT 0,30;
用表格
填写你的inner_join_conditions