索引设计原则

1.被频繁使用的字段设置索引
字段被频繁用在where 和order 等条件里面
数据表创建完毕,要预估那些字段被经常使用,就给其创建索引
2.执行时间长的sql 语句考虑设计索引
可以利用“慢查询日志”收集这样的sql 语句并优化设计索引
3.逻辑非常重要的sql 设计索引
例如商城系统里面,会员给自己账户充值就比较重要。
还有会员下订单购物,进行付款的时候也比较重要。
4.字段内容足够花样化,可以考虑设计索引
例如性别,不适合做索引

前缀索引

如果一个字段的内容的前面的n位信息已经足够可以标识当前的字段内容,就可以把字段的前n位获得出来并创建索引,通过字段内容前n位创建的索引就称为前缀索引
优点:索引占用的物理空间比较小,这样的索引运行速度快,效率高,对mysql 整体性能提高有很大帮助。

alter table 表名 add key(字段(位数)) 

要先提前确定,是前几位可以标志当前内容。
获取字段的前n位:substring(字段,开始位置(从1开始),结束位置(从1 开始)

select count(*)/count(distinct substring(字段,startIndex,endIndex))from 表名 

这里写图片描述
根据以上计算,可以考虑索引位数信息。可以设置索引。

全文索引

什么是全文索引:
其它索引是把字段的内容作为一个整体进行索引设计,全文索引,类似我们有一篇作文,把作文其中的一些关键字给获取出来当成索引内容。
具体理解,就是做like 模糊查询
把简介中的一些关键字单词获取出来,制作索引。
这里写图片描述
全文索引注意:
1.字段类型必须位varchar/char/text 类型
2.mysql 5.6.4 之前只有Myisam 支持,之后则Myisam 和innodb 都支持
3.mysql 中的全文索引目前只支持英文(不支持中文),如果需要支持中文可以使用sphinx
4.现实生成中mysql 的全文索引不常使用,sphinx 常使用
mysql 全文索引自作聪明,对关键词有自己的考虑
创建全文索引

创建索引:alter table t_user_auth
add FULLTEXT 
index index_crad_no (crad_no);
删除索引: 
alter table t_user_auth
drop    index  index_crad_no 

全文索引查询是要特殊处理的:

select * from t_user_auth where   
crad_no like '%1234%'

select * from t_user_auth where   
match(crad_no) against('1234')

复合全文索引

创建复合全文索引:

alter table t_user_auth add fulltext index real_name_and_status (real_name,status);

查询复合全文索引:

select * from t_user_auth where match(real_name,status) against('1,2');
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值