加入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条记录)

+2

这是一个小写的L,不是数字1 – chops

+1

您在表格中定义了哪些索引和键? –

+0

b.isbn(PK),a.isbn(FK),l.isbn(FK) –

我敢打赌,其中一个或一些这些列没有索引。 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?

+0

啊我明白你的意思了,是的,这两个表a&l可能没有isbn编号 –

+0

@ mk_89在其他表上存在“isbn”的值根本不重要。最重要的是你在表格中定义的'index'。 –

问题可能是如果isbn没有索引。

+0

你到底是什么意思? –

显然指数是> 6K表中的记录的罪魁祸首。

另一个原因可能是,加入第一个表后,它将对第二个连接进行巨大扫描。所以它会返回你很多行。