MYSQL最佳使用索引进行JOIN查询

时间:2018-09-07 14:00:19

标签: mysql

我有两个桌子

homes_info(四列)

 home_id (primary_key)  
 title (varchar)
 price (double)
 location_id (foreign key)

我还有另一个桌子

locations(三列)

 location_id (primary key)
 location_name (varchar)
 location_state (varchar)

我只想进行这两个查询

SELECT * FROM homes_info WHERE title = 'xxxxx' && price = 'xxxx'

SELECT * FROM homes_info LEFT JOIN locations on homes_info.location_id = locations.location_id WHERE title = 'xxx' && price = 'xxxxx' && location_name = 'xxxx'

以下是在上述表格上使用索引来优化上述两个查询的最佳方法吗?

ALTER TABLE homes_info ADD INDEX(title, price)

ALTER TABLE locations ADD INDEX(location_name)

我知道第一个查询的综合索引INDEX(title, price)比单独的索引好,但是第二个查询(我使用LEFT JOIN的地方)呢?将对第二个查询在titleprice列上使用单独的索引会更好

简单来说,  这两个表上的索引用于优化以上两个查询的最佳方式是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

对于表位置,您可以使用y ..您可以使用单个组合

ALTER TABLE locations ADD locations_info INDEX(location_name , localtion_id)

使用带有localtion_name和location_id的复合符号,可以确保where(join)子句所需的所有信息均已由索引解析,从而避免访问数据表以获取.. location_id