我是靠谱客的博主 阳光小蝴蝶,最近开发中收集的这篇文章主要介绍hint mysql_mysql查询优化器提示(hint),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在MySQL中,当我们提交SQL查询时,查询优化器默认选择一些索引来获得最佳的查询计划,有时可能不是最好的,但是可通过使用名为USE INDEX的索引提示来推荐查询优化器应该使用的索引。

一起看下MySQL USE INDEX提示的语法:

SELECT select_list

FROM table_name USE INDEX(index_list)

WHERE condition;

这个语法的作用是,USE INDEX指示查询优化器使用其中一个命名索引来查找表中的行。

零:先看下使用的公开数据

这里我们使用classicmodels数据库中一张customers表来演示我们USE INDEX的使用,先看下customers表结构customers

一:使用SHOW INDEXES语句显示customers表的所有索引:

#显示表所有索引

SHOW INDEXES FROM customers;

二:接下来我们一起再创造四个其他的索引

CREATE INDEX idx_c_ln ON customers(contactLastName);

CREATE INDEX idx_c_fn ON customers(contactFirstName);

CREATE INDEX idx_name_fl ON customers(contactFirstName,contactLastName);

CREATE INDEX idx_name_lf ON customers(contactLastName,contactFirstName);

三:查看某个查询语句使用了哪些索引

找到联系人姓名或联系人姓氏的客户以字母A开头。使用EXPLAIN语句检查使用了哪些索引:

EXPLAIN SELECT *

FROM

customers

WHERE

contactFirstName LIKE 'A%'

OR contactLastName LIKE 'A%';

就像结果中展示的一样,查询优化器使用了idx_c_fn and idx_c_ln

四:如果有更好的索引使用,可以使用USE INDEX

比如说认为 idx_c_fl和 idx_c_lf 比较好,我们来看下使用情况

EXPLAIN SELECT *

FROM

customers

USE INDEX (idx_name_fl, idx_name_lf)

WHERE

contactFirstName LIKE 'A%'

OR contactLastName LIKE 'A%';

一起看下结果

这时候我们便看到查询优化器使用了我们推荐的索引了。

最后

以上就是阳光小蝴蝶为你收集整理的hint mysql_mysql查询优化器提示(hint)的全部内容,希望文章能够帮你解决hint mysql_mysql查询优化器提示(hint)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部