博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
索引的设计与使用
阅读量:5033 次
发布时间:2019-06-12

本文共 828 字,大约阅读时间需要 2 分钟。

1、MyISAM和InnoDB存储引擎的表默认创建的都是BTREE索引。MySQL支持前缀索引;支持全文本索引用于全文搜索,但只有M有ISAM存储引擎支持全文索引,并且仅限于char、varchar和text列;不支持函数索引。MEMORY存储引擎使用HASH索引,但也支持BTREE索引。 2、设计索引的原则:搜素的索引列不一定是所要选择的列。最适合索引的列是出现在where子句中的列或链接子句中指定的列;使用唯一索引,考虑某列中值的分布,索引的列基数越大索引的效果越好;使用短索引。利用最左前缀;不要过度索引;对于InnoDB 存储引擎的表,记录默认会按照一定的顺序保存,如果有明确定义的主键,则按照主键顺序保存。如果没有主键,但是有唯一索引,那么就是按照唯一索引的顺序保存。如果既没有主键又没有唯一索引,那么表中会自动生成一个内部列,按照这个列的顺序保存。按照主键或者内部列进行的访问是最快的,所以InnoDB 表尽量自己指定主键,当表中同时有几个列都是唯一的,都可以作为主键的时候,要选择最常作为访问条件的列作为主键,提高查询的效率。另外,还需要注意,InnoDB 表的普通索引都会保存主键的键值,所以主键要尽可能选择较短的数据类型,可以有效地减少索引的磁盘占用,提高索引的缓存效果。 3、hash索引只适用于=或<=>操作符的等式比较,优化器不能使用hash索引来加速order by操作,MySQL不能确定在两个值之间大约有多少行,只能使用整个关键字来搜索一行。而对于BTREE 索引,当使用>、=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern'(其中'pattern'不以通配符开始)操作符时,都可以使用相关列上的索引。
posted on
2018-03-01 14:45 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/mingyao123/p/8488353.html

你可能感兴趣的文章
3.14-3.20周总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
luogu4012 深海机器人问题 网络流
查看>>
android 拍照上传照片
查看>>
ArchLinux安装开源VMware Tools
查看>>
系统用户分析模型
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
jsp题库 (一)小测(25/21)
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
C#微信登录-手机网站APP应用
查看>>