加入3个表,查询没有回应
我试图加入3个表时出现问题,每当我在我的服务器上运行查询时,我只得到一个需要手动终止的巨大暂停。加入3个表,查询没有回应
这里是表狭窄
books : isbn(PK)
books_a : id(PK), isbn, price, condition
books_l : id(PK), isbn, price, condition
这里是查询
SELECT
b.isbn,
a.price AS a_price,
a.condition AS a_condition,
l.price AS l_price,
l.condition AS l_condition
FROM
books b
LEFT JOIN a_books a ON b.isbn = a.isbn
LEFT JOIN l_books l ON b.isbn = l.isbn
什么能与我的查询问题? (注意我在每个表格中有超过6000条记录)
我敢打赌,其中一个或一些这些列没有索引。 a_books.isbn
,books.isbn
,l_books.isbn
尝试运行此声明,
ALTER table a_books ADD INDEX IDX_abk (isbn);
ALTER table books ADD INDEX IDX_bk (isbn);
ALTER table l_books ADD INDEX IDX_lbk (isbn);
啊我明白你的意思了,是的,这两个表a&l可能没有isbn编号 –
@ mk_89在其他表上存在“isbn”的值根本不重要。最重要的是你在表格中定义的'index'。 –
问题可能是如果isbn没有索引。
你到底是什么意思? –
显然指数是> 6K表中的记录的罪魁祸首。
另一个原因可能是,加入第一个表后,它将对第二个连接进行巨大扫描。所以它会返回你很多行。
这是一个小写的L,不是数字1 – chops
您在表格中定义了哪些索引和键? –
b.isbn(PK),a.isbn(FK),l.isbn(FK) –