Mysql入门mysql索引学习教程
《Mysql入门mysql索引学习教程》要点: MYSQL教程在mysql 中,索引可以分为两种类型 hash索引和 btree索引. MYSQL教程什么情况下可以用到B树索引? MYSQL教程1.全值匹配索引 MYSQL教程比如: MYSQL教程orderID="123” MYSQL教程2.匹配最左前缀索引查询 MYSQL教程比如:在userid 和 date字段上创建联合索引. MYSQL教程3.匹配列前缀查询 MYSQL教程比如: order_sn like ‘134%' 这样可以使用到索引. MYSQL教程4.匹配范围值查询 MYSQL教程createTime>'2015-01-09' and createTime<'2015-01-10' MYSQL教程5.精确匹配左前列并范围匹配另外一列 MYSQL教程比如: MYSQL教程userId=1 and createTime>'2016-9-18' MYSQL教程6.只访问索引的查询,称为覆盖索引,及索引包括查询列的数据. MYSQL教程BTREE索引的限制 MYSQL教程1.如果不是按照索引的最左列开始查找,则无法使用索引. MYSQL教程比如创建联合索引: MYSQL教程orderId,createTime 字段创建联合索引,如果只是输入 createTIme的条件,没有orderid的条件,那么将不能使用此索引. MYSQL教程2.使用索引时不能跳过索引的列. MYSQL教程三列: MYSQL教程日期,姓名,电话 组成列和索引,如果查询时 只输入 日期 和电话,那么只能使用日期作为索引进行过滤. MYSQL教程3.NOT IN 和 <> 操作无法使用索引. MYSQL教程4.如果查询中有某个列的范围查询,则其右边所有列都无法使用索引. MYSQL教程hash 索引的特点 MYSQL教程hash索引是基于hash表实现的,只有查询条件精确匹配hash 索引中的所有列时,才能使用hash索引.只能是等值查询. MYSQL教程对于hash索引中的所有列,存储引擎都会为每一行计算一个hash码,hash索引中存储的就是hash码. MYSQL教程限制: MYSQL教程1.必须两次读取,先读取hash 找到对应的行,再读取对应的行数据. MYSQL教程2.hash索引无法用于排序. MYSQL教程3.只支持精确查找,不支持部分索引查找,也不支持范围查找. MYSQL教程hash冲突: MYSQL教程hash 索引不能使用于选择性很差的字段,而要用在比如 选择性强的列上创建hash索引. MYSQL教程比如:不要在性别字段上创建hash索引. MYSQL教程为什么要使用索引? MYSQL教程1.索引大大减少存储引擎需要扫描的数据量.索引小于数据大小. MYSQL教程2.索引可以帮助我们进行排序以避免使用临时表.索引是有顺序的. MYSQL教程3.索引可以把随机的I/0 变为 顺序的IO MYSQL教程索引是不是越多越好? MYSQL教程1.索引会增加写操作的成本 MYSQL教程2.太多的索引会增加查询优化器和选择时间. MYSQL教程建立索引的策略 MYSQL教程1.索引列上不能使用表达式或函数 MYSQL教程比如:select * from product where to_days(out_date) Cto_days(current_date)<=30,out_date为索引列. MYSQL教程改成: MYSQL教程select* from product where out_date<date_add(current_date,interval 30 day) MYSQL教程2.索引大小不能超过一定值. MYSQL教程3.前缀和索引列的选择性. MYSQL教程create index idx_NAME on table (account); MYSQL教程4.联合索引 MYSQL教程如何选择索引列的顺序. MYSQL教程1.经常会被索引的列. MYSQL教程2.选择性高的里的列的优先. MYSQL教程3.对小的列创建索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |