数据库-优化-索引-索引的优化注意事项
注意事项
设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有一下几点注意:
1,创建索引
对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。
但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。
2,复合索引
比如有一条语句是这样的:select * from users where area=’beijing’ and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age,salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。
因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。
3,索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
4,使用短索引
对字符串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
5,排序的索引问题
mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
6,like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
7,不要在列上进行运算
select * from users where YEAR(adddate)
8,不使用NOT IN操作
NOT IN操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替
数据库-优化-索引-索引的优化注意事项相关推荐
- mysql,oracle数据库优化之索引
mysql,oracle数据库优化之索引,分库分表,表分区,本地索引,全局索引 数据库引擎 数据库索引 索引类型 主键索引 唯一索引 普通索引 全文索引 位图索引(oracle数据库才有) 在哪些列上 ...
- access建立两个字段唯一索引_数据库索引原理及优化
微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...
- 数据库如何进行索引优化
数据库索引 1.什么是索引 在数据库中,索引的含义与日常意义上的"索引"一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象. A)索引可以避免全表扫 ...
- 再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化
原文:再送一波干货,测试2000线程并发下同时查询1000万条数据库表及索引优化 继上篇文章<绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来>发布后在博客园首页展示 ...
- 数据库高级知识——索引优化分析(一)
文章目录 1.SQL性能下降原因 2.常见通用的Join查询 2.1 SQL执行顺序 2.2 Join图 3.索引简介 3.1 索引是什么 3.2 索引优势 3.3 索引劣势 3.4 索引分类 3.5 ...
- 【数据库】第三章 事务、索引和SQL优化
[数据库]第三章 事务.索引和SQL优化 文章目录 [数据库]第三章 事务.索引和SQL优化 一.事务 1.原子性 2.持久性 3.隔离性 4.一致性 二.索引 1.介绍 2.分类 3.底层实现 4. ...
- 数据库优化、索引【面试题】
目录 数据库调优的目标 索引覆盖是什么? 最左缀原则是什么? 哪些因素可能会造成Mysql性能问题? 如果sql语句需要使用联表查询我们如何进行优化呢? Mysql常见优化手段 你从哪些方面去优化你的 ...
- MySQL数据库——索引机制及其优化
基础知识储备 局部性原理 发现程序和数据的访问都有聚集成群的倾向,在一段时间内,仅使用其中一小部 分(也称空间局部性),或者最近访问过得程序代码和数据,很快又被访问的可 能性很大(也称时间局部性). ...
- 数据库调优策略:优化MySQL服务器、优化数据库结构、大表优化、隐藏索引对调优的帮助
文章目录 1. 数据库调优的措施 1.1 调优的目标 1.2 定位调优问题 1.3 调优的维度和步骤 2. 优化MySQL服务器 2.1 优化服务器硬件 2.2 优化MySQL的参数 3. 优化数据库 ...
- 【学习笔记】MySQL数据库高级版 - 索引优化、慢查询、锁机制等
本文是尚硅谷周阳(阳哥)老师的MySQL高级篇视频的学习笔记.由于视频比较老,所以在高版本的MySQL中索引的地方做了优化,和视频的内容不完全一样,不过大体一致.从第四节锁机制开始的部分还没有整理. ...
最新文章
- python编辑器,作为初学者该如何抉择?
- java主动抛出400异常_400个线程同时查询数据,抛出一个异常
- 中使用mysql连接失败_如何在命令行下使用 MySQL 连接数据库不用每次都输入密码?...
- python嵌套循环跳出_如何跳出嵌套的while循环
- Oracle的关系运算
- python修改手机默认语言_修改 CentOS 6.x 上默认Python的方法
- oa 中会议推送 实现_揭秘“OA与ERP高端融合方案”三大亮点
- Java并发编程之AbstractQueuedSynchronizer(AQS)源码解析
- 修改matlab的工作路径(图解版)
- 计算机原理与接口专科,春福师计算机原理与接口关键技术在线作业二.doc
- 在虚幻引擎5中构建你的首款游戏 - 03 - 模型和材质蓝图
- log4j日志整合输出(slf4j+commonslog+log4j+jdklogger)
- 面试经验之阿里暑期实习
- VIN码/车架号的详解,车架号识别,VIN码识别,OCR车架号识别能带来什么
- 调和级数 java,再探π^2/6
- Excel2Latex 实操步骤(1)
- 墙裂推荐7款办公必备软件,免费、小巧、好用
- Golang四舍五入保留两位小数
- 芯片封装的作用以及常见封装技术
- 用C++实现复数的四则运算