mysql索引概念

#mysql索引概念

/*

索引通俗来讲就像是一本书的目录
对数据库来说,索引的作用即是给数据加目录
索引实际上是一种数据结构

索引的意义和作用就是加快查询速度

索引本质上是数据结构

索引的好处:加快了查询速度(SELECT)

索引的坏处:
降低了增删改的速度(UPDATE/DELETE/INSERT)
增大了表的文件大小(索引文件甚至可能比数据文件还大)


btree(二叉树)索引 查找log2N次
哈希索引又叫散列索引
hash(哈希)索引  理论上可以最少1次就能查到数据

哈希算法又叫散列算法
(算出来的值,不连续)
碰撞性:2个值算出来同一个结果(比如MD5加密就有提到碰撞性)
碰撞性高,说明散列算法性能低,说明该散列算法写的不太好
还要注意最大区间

*/

/*
比如:换服务器导入数据
.sql文件
新闻表 500万行数据
新闻表共15列,其中10列加了索引
如果直接导入数据会非常耗时

建议如下做法:
1.先去掉索引
2.再导入数据
3.最后再统一加索引

*/

/*

索引的使用原则
1.不过度索引
2.索引条件列(WHERE后面最频繁的条件比较适宜索引)
3.索引散列值,越散越好,过于集中的值不要索引

比如像以下列的值就过于集中了,给这些列加索引,其实意义不大
比如:给性别列"男","女"加索引,意义不大
比如:给省市列"黑龙江","吉林","河北","湖北","江西","湖南","广东"加索引,意义不大

*/

/*
索引的优化和数据库优化是一门挺大的学问,并非一朝一夕能掌握
*/

#查看索引的使用情况
SHOW STATUS LIKE 'Handler_read%';
#Handler_read_key的值高,索引查询多,查询效率越高
SHOW STATUS LIKE 'Handler_read_key%';
#Handler_read_rnd_next的值高,随机查询多,查询效率越低
SHOW STATUS LIKE 'Handler_read_rnd_next%';

#
EXPLAIN SELECT * FROM account2 WHERE MATCH(introduce) AGAINST ('hometown');

#
SELECT SYSDATE(), SYSDATE() - 1, SYSDATE() - 5;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值