我在尝试加入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
我的查询有什么问题? (注意我每张表中有超过6,000条记录)
答案 0 :(得分:3)
我敢打赌,这些列中的一个或一些没有编入索引。 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);
答案 1 :(得分:1)
问题可能在于isbn没有索引。
答案 2 :(得分:1)
显然索引是>的罪魁祸首。表中有6K记录。
答案 3 :(得分:1)
另一个原因可能是,在加入第一个表后,它将是第二个连接的巨大扫描。所以它会给你带来很多行。