我有两个桌子
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
的地方)呢?将对第二个查询在title
和price
列上使用单独的索引会更好
简单来说, 这两个表上的索引用于优化以上两个查询的最佳方式是什么?
谢谢!
答案 0 :(得分:1)
对于表位置,您可以使用y ..您可以使用单个组合
ALTER TABLE locations ADD locations_info INDEX(location_name , localtion_id)
使用带有localtion_name和location_id的复合符号,可以确保where(join)子句所需的所有信息均已由索引解析,从而避免访问数据表以获取.. location_id