加入3个表,查询无响应

时间:2012-09-27 05:56:16

标签: mysql sql

我在尝试加入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条记录)

4 个答案:

答案 0 :(得分:3)

我敢打赌,这些列中的一个或一些没有编入索引。 a_books.isbnbooks.isbnl_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);

Read this article: How does database indexing work?

答案 1 :(得分:1)

问题可能在于isbn没有索引。

答案 2 :(得分:1)

显然索引是>的罪魁祸首。表中有6K记录。

答案 3 :(得分:1)

另一个原因可能是,在加入第一个表后,它将是第二个连接的巨大扫描。所以它会给你带来很多行。