MYSQL——12.索引学习

索引学习

提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调SQL,查询速度就可以提高百倍千倍。

假设emp表有八百万条数据

select count(*) from emp;

-- 索引学习
create table emp(
        id int ,
        `name` VARCHAR(30),
        sex varchar(10)
)
​
select * from emp;
select count(*) from emp;
​
INSERT INTO emp(id,name,sex)
    ( SELECT * FROM emp );
    
--  查询数据的存放路径。
    show global variables like 'datadir%'
    
在没有加索引的情况下来查询数据     耗时差不多2s emp.idb 差不多一百多兆。
select * from emp where name = '毅哥';
创建索引,在搜索 现在差不多一百四十多兆,增大了不少。(空间换时间),现在0.00几秒,速度程几何加快提升。
create index emp_index on emp(id);
select * from emp where name = '毅哥';
​
​
索引的原理。
在没有加索引的时候,查询是从第一条到最后一条数据全部查询,进行全表扫描。所以数据量大,速度就特别慢。
在加了索引之后,他会根据你加索引的列,生成二叉树。取中间值,然后依次小的在左边,大的在右边进行排序,哪怕数据量大,速度也很快。
​
索引的代价:
1.磁盘占用
2.对该列的增加,修改,删除的语句效率有影响(因为执行这些语句,会重新生成索引二叉树)
但是在升级中查询就站到了百分之九十以上。
​
​
​
创建索引
索引的类型
1.主键索引,主键自动的为主索引(primary key)
2.唯一索引(unique)
3.普通索引(indext)
4.全文索引(不用学)
​
​
-- 在设计表的时候,设计主键,自动就是索引了,搜索很快的。
-- 在设计表到时候,某个字段添加unique唯一约束,那么他自己就有唯一索引了,搜索也是很快的。
​
我们往往用的最多的是普通索引,index 因为我们平常用名字或者其他条件查询的时候,就可以用这个普通索引。
​
create table test8(
    id int,
    `name` varchar(30)
)
-- 查询表是否有索引
show indexes from test8;
-- 创建唯一索引
create unique index test8_index on test8(id);  索引名,索引表及索引列。
-- 创建普通索引
create index test_index on test8(name);   一个列上面只可以有一个索引。
-- 如何选择
1.如果该列不会重复,那就是添加唯一索引,否则就是普通索引。
​
​
-- 删除索引
先查需要删除的索引名,在删
show index from test8;
drop index test_index on test8;  索引名,索引表。
-- 修改索引,先删除,在添加。
-- 查询索引
1.方式
show indexes from test8;
2.方式
show index from test8;
3.方式
show keys from test8;
​
​
总结:
那些列上面适合做索引?
1.较频繁的作为查询条件字段的应该创建索引。如部门编号等
2.唯一性太差的字段不适合单独创建索引,即使频繁查询也不行。如性别的男女等
3.更新非常频繁的字段不适合创建索引。如登录次数等(会重新构建索引)等
4.不会出现在where子句中的字段不该创建索引。
需要遵守,否则可能添加了索引,但是速度反而更慢了。
​
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_48261292

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值