每当我向40k数据库查询时,我使用LEFT JOIN而不是将表添加到FROM,然后使用AND条件,这是我学习的方式。我的意思是......这不是一个真正的问题......
我通常这样做:
SELECT * FROM (`table_A`)
LEFT JOIN `table_B` ON `product`.`table_A` = `product`.`table_B`
WHERE product.table_A > 0
INSTEAD OF
SELECT * FROM (`table_A`, `table_B`)
WHERE product.table_A > 0
AND `product`.`table_A` = `product`.`table_B`
事实是,每当我在对数据库进行的任何查询中使用LEFT JOIN
时,独立于表或查询类型,0,0012秒的时间变为0.5秒甚至2 -3秒。因此,第二个查询总是比使用LEFT JOIN
的第一个查询更快。
发生了什么事? 可能与分配给join_buffer_size的内存或MySQL中的其他参数有关吗?
我正在使用MySQL 5.5。版。顺便说一句,如果我使用5.6,所有查询至少需要两倍的时间。