
MySQL数据库中索引的使用
发布日期:2021-05-09 02:17:12
浏览次数:21
分类:博客文章
本文共 1258 字,大约阅读时间需要 4 分钟。
1.索引:
- 针对数据库中现有的数据,整理出一块物理存储下来的用于快速查找数据用的的东西。
- 数据库中实际数据的存储会按照某种索引,默认是按照主键(特殊的索引),并且数据物理结构上的存储顺序也是按照主键的顺序。
- 索引的创建会增大物理上的开销。
2.创建索引时如何选择列的数据类型?
- 数据类型小:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。能用bit类型,不用int,能用int,不用decimal.
- 数据类型简单:整形数据比起字符,开销更小
- 尽量避免Null:含有Null的列,很难进行查询优化,你可以用0,空字符串' '或者一个特殊的值去代替。
3.什么时候考虑创建索引?
- 一开始做项目的时候,通常不会去考虑对数据库创建索引这件事,因为没有大量的数据作为基础,建立索引区别不大。当系统上线运营了一段时间后,数据库中数据量达到一定规模时我们可以进行监测,当发现检索速度变慢(比如大于100ms)时,我们就需要去分析业务逻辑中sql语句where后面的判断字段,针对这些字段建立索引进行优化。
4.建立索引对sql语句编写有什么要求?
- 把'='值的条件尽量写在前面,表示范围的比如'>'尽量写在后面,尽量避免使用'or',否则建立索引对优化查询速度已经没有意义了。比如查询语句后面 where gender = 1 and isdelete = 0 and birthday > ‘1990-1-1’,我们可以建立一个包含gender、isdelete和birthday的组合索引
5.索引操作:
查看索引
show index from 表名;
创建索引
create index 索引名 on 表名(字段名1,...);
如果只有一个字段名,表示建立单列索引;多个字段名,表示建立组合索引。如果字段为字符类型,可以在字符后面指定长度,比如students(name(20),age),也可以不指定,其他类型(int,bit)的字段不需要指定长度
删除索引
drop index 索引名 on 表名;
6.索引缺点:
- 虽然索引会提升查询的速度,但同时会降低更新表(insert into|delete from|update)的速度,因为更新表的时候还要保存一下索引文件
- 建立索引,会占用磁盘空间的索引文件
7.性能监测工具profiles的使用------仅限于当前数据库的本次连接,下次连接失效
示例:
开启运行时间监测
set profiling = 1;
执行查询语句
select * from areas where atitle = '北京市';
查看执行时间
show profiles;
为表areas的atitle列创建索引
create index title_index on areas(atitle(20));
再次执行查询语句
select * from areas where atitle = '北京市';
再次查看执行时间
show profiles;
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月24日 16时19分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1Z204050、施工质量不合格的处理
2019-03-14
【字节网盘】九款超好看不同页面404源码
2019-03-14
两款404页面自动跳转源码html
2019-03-14
MacOS 应对系统无响应的方法
2019-03-14
Mac隐藏辅助功能|自定义苹果Mac显示器
2019-03-14
ActivityNotFoundException异常错误
2019-03-14
git远程仓库切换
2019-03-14
学习Vue.js2.0(国外视频教程)
2019-03-15
微信小程序云开发:怎么删除云函数?已解决
2019-03-15
PyCharm配置anaconda环境
2019-03-15
Java面试题整理,闭关在家37天“吃透”这份345页PDF,纯干货
2019-03-15
word文档手写字母总会大写问题
2019-03-15
laravel server error 服务器内部错误
2019-03-15
iJ配置Maven环境详解
2019-03-15
面试题 08.01. 三步问题
2019-03-15
剑指 Offer 11. 旋转数组的最小数字
2019-03-15
作为我的第一篇csdn博客吧
2019-03-15
一道简单的访问越界、栈溢出pwn解题记录
2019-03-15