在MySQL手册中有一个关于索引提示的页面,提到您可以为查询的特定部分指定索引提示.
您可以通过向提示添加
FOR子句来指定索引提示的范围.这为优化程序为查询处理的各个阶段选择执行计划提供了更细粒度的控制.要仅影响MySQL决定如何在表中查找行以及如何处理联接时使用的索引,请使用FOR JOIN.要影响对行进行排序或分组的索引用法,请使用FOR ORDER BY或FOR GROUP BY.
但是,几乎没有关于它如何工作或在MySQL优化器中实际执行的操作的信息.在实践中,实际上改进任何东西似乎都可以忽略不计.
这是一个测试查询以及有关查询的说明:
SELECT
`property`.`primary_id` AS `id`
FROM `California` `property`
USE INDEX FOR JOIN (`Zipcode Bedrooms`)
USE INDEX FOR ORDER BY (`Zipcode Bathrooms`)
INNER JOIN `application_zipcodes` `az`
ON `az`.`application_id` = '18'
AND `az`.`zipcode` = `property`.`zipcode`
WHERE `property`.`city` = 'San Jose'
AND `property.`zipcode` = '95133'
AND `property`.property_type` = 'Residential'
AND `property`.`style` = 'Condominium'
AND `property`.`bedrooms` = '3'
ORDER BY `property`.`bathrooms` ASC
LIMIT 15
;
Run Code Online (Sandbox Code Playgroud)
说明: …