Mysql所有的列都可以使用索引,。对相关列使用索引是提高SELECT操作性能的最佳途径。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少256字节。在索引中使用col_name(length)语法,可以创建一个只使用char和archar列的第一个length个字符的索引,按这种方式只索引列的前缀可以索引文件小的多。MyISAm和INNODb存储引擎还支持对blob和text列的索引,但是必须指定索引长度。fulltext索引用于全文搜索不支持局部索引。

多列索引:

Mysql可以创建多列索引,一个索引支持15个列,多列索引对于多条件查询很有帮助。多列索引可以看做是通过连接索引列的值而创建的值的排序的数组。

Mysql按这样的方式使用多列索引:当在WHERE子句为索引的第一个列指定已知的数量时查询很快,即使没有指定其他列的值。

CREATE INDEX suoyin ON Table (col1,col2)

suoyin索引是对于col1和col2的索引,索引可以用于col1,或者是col1,col2在已知范围指定值的查询。

select * FROM test where col1='where';

select * from test where col1='where1' AND col2="where2";

select * from test where col1='where1' AND (col2='where1' OR col2='where3');

select * from test where col1='where1' AND col2 >='where1' AND col2 < 'where3';

但是多列索引不用与下边的查询:

select * from test WHERE col2 = 'where';

select * from test where col1='where1' OR col2 = 'where3';

mysql 如何使用索引:

索引用于快速找出在某一个列中有一特定值的行。不使用索引,mysql必须从第一条记录开始然后读完整个表直到找出相关的行,表越大,花费的时间越大。如果表中查询的列有索引,Mysql不必查看所有的数据,快速达到一个位置去搜索数据。大多数mysql索引在B树中存储。。

索引用于下面的操作

快速找出匹配一个WHERE子句的行。

删除时。

执行联接查询从其它表检索时

对具体的有索引的列找出max,min。

对一个可用关键字进行排序分组。

当使用

SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;

如果表有一个多列索引,优化器可以使用最左面的索引前缀来找出行。例如,如果有一个3列索引(col1,col2,col3),则已经对(col1)、(col1,col2)和(col1,col2,col3)上的搜索进行了索引

如果列不构成索引最左面的前缀,mysql不能使用局部索引。index(col1,col2,col3)

select * from table where col1=val1;

select * from table where col1=val1 AND col2=val2;

select * froom table where col2=val2;不使用索引

select * from table where col2=val2 and col3=val3; 不实用索引

SELECT * FROM Table WHERE col1=val1 OR col2=val2; 不实用索引。

也可以在表达式通过=、>、>=、

like 'partten%';使用索引

like 'parrtn%sf%'; 使用索引

like '%parrtn';不实用索引,因为以%开头使用不了索引值的前缀。

like other_col 不使用索引因为不是一个常量值。

如果列是被索引的,那么 col_name is NULL 的搜索也会使用索引。

任何不跨越 WHERE子句中的所有 AND级的索引不用于优化查询,也就是为了能够使用索引,必须在每个AND组中使用所有索引的前缀。

下边的使用索引:

where index_part1 = val1 AND index_part2=val2;

where index1=val1 OR index2=val2 AND index3=val3;这里的列都是索引前缀或是单列索引。

下边的不实用索引:

where index_part2 = val2 AND|OR index_part3=val3;没使用索引前缀。

where index-part1 =val1 OR index_part2=val2;没有索引跨越所有行

wher index_part1 AND a='A' 索引中不使用WHERE子句的两部分

Hash索引还有一些其它特征:

它们只用于使用=或<=>操作符的等式比较(但很快)。它们用于比较 操作符,例如发现范围值的

优化器不能使用hash索引来加速ORDER BY操作

MySQL不能确定在两个值之间大约有多少行(这被范围优化器用来确定使用哪个索引)。如果你将一个MyISAM表改为hash-索引的MEMORY表,会影响一些查询

只能使用整个关键字来搜索一行。(用B-树索引,任何关键字的最左面的前缀可用来找到行

mysql三个字段最优索引_mysql 多列索引优化相关推荐

  1. c mysql 索引_MySQL 多列索引的生效规则

    mysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要, 只需要知道结果,既然是索引那这个数据结构最后是排好序:就像新华字典他的目录就是按照a, ...

  2. mysql 中文列索引_MYSQL多列索引

    大家讲道理2017-04-17 11:38:122楼 1 对mysql来说, : http://dev.mysql.com/doc/refman/5.7/en/create-index.html An ...

  3. mysql 3列索引_mysql多列索引

    1,数据库每次查询只能使用一个索引 2,假设数据 表T (a,b,c) rowid 为物理位置 rowid a b c (1) 1 1 1 (2) 2 1 13 (3) 2 2 14 (4) 1 3  ...

  4. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  5. mysql单列索引和多列索引_mysql索引类型 normal, unique, full text

    问题1:mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用 ...

  6. mysql聚集索引可以多列吗_MySQL使用单列索引和多列索引

    讨论MySQL选择索引时单列单列索引和多列索引使用,以及多列索引的最左前缀原则. 1. 单列索引 在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一.可以考虑使用索引的主要有两种类型的列:在W ...

  7. mysql数据库最多列_mysql多列索引和最左前缀

    数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度. 索引优化是数据库优化的最重要手段. 如果查询语句使 ...

  8. MySQL组合索引(多列索引)使用与优化

    一.多列索引 我们经常听到一些人说"把WHERE条件里的列都加上索引",其实这个建议非常错误.在多个列上建立单独的索引大部分情况下并不能提高MySQL的查询性能.MySQL在5.0 ...

  9. 正确理解Mysql的列索引和多列索引

    本文转自:http://blog.csdn.net/lovelyhermione/article/details/4580866 Mysql数据库提供两种类型的索引,如果没正确设置,索引的利用效率会大 ...

最新文章

  1. 地图收敛心得170405
  2. “池哥昼”的一件趣事
  3. 个人脚本收藏[不断更新 last update 2005-12-10]
  4. mysql自带加密解密字符集问题
  5. jQuery 工具方法 (全)
  6. 旅游后台管理系列——SSM框架Dao层整合
  7. 操作系统课程设计之磁盘调度系统的设计与实现c语言
  8. 机器学习之实战matlab神经网络工具箱
  9. Asterisk G729编码支持
  10. Linux 学习之路(一)——Linux 发行版本的选择以及opensuse 13.1 安装
  11. win10隐藏网络计算机,Win10怎么连接隐藏的wifi?
  12. |Boids|鸟群模型|鸟群算法|学习笔记 - 论文学习
  13. 2023华为软件精英挑战赛——全赛段思路分享与总结
  14. 攀藤G5S数据位编码
  15. Python程序设计入门32道基础编程题目与参考代码
  16. 论文复审意见及实验规划
  17. Apollo planning之PiecewiseJerkPathOptimizer
  18. 易用、弹性、开放 — 云原生技术是数字时代的“水电煤”
  19. 频谱细化-----Zoom-FFT算法介绍及MATLAB实现
  20. linux cp命令的-f 参数

热门文章

  1. 我的世界服务器修改飞行速度,《我的世界》创造模式飞行速度修改方法介绍
  2. 如果刘华强是个码农...
  3. 一起来看看Fastjson的三种漏洞利用链
  4. 当会打王者荣耀的AI学会踢足球,一不小心拿下世界冠军!
  5. 每日一皮:听说学琵琶的都很文弱...
  6. 突发流量引发的Dubbo拥堵,该怎么办?
  7. 深度学习手势识别带你玩转神庙逃亡
  8. 如何将 Spring Boot Actuator 的指标信息输出到 InfluxDB 和 Prometheus
  9. dnslog在mysql在linux_DNSlog实现Mysql注入
  10. cop2000计算机组成原理,COP2000计算机组成原理-南昌大学网络教学平台.doc