MySQL索引的设计和使用
一、索引可以有效地提升SELECT操作的性能,同时会影响UPDATE、CREATE和DELETE操作的性能。每种引擎对于表的索引有数量和长度的限制。
二、索引的设计原则
(A) 搜索的索引列,不一定是要选择的列,最适合索引的列是where子句的列或连接子句中的列。
(B) 使用唯一索引,索引列的基础越大,索引的效果越好。
(C) 使用短索引,如果对字符串列(char,varchar,text)索引,应该指定前缀长度,使用前缀索引。
(D) 利用最左前缀,创建一个n列的索引时,实际是创建了MySQL可利用的n个索引。可利用索引中的最左边的列集来匹配行,这样的列集被称为最左前缀。
(E) 不要过度索引,
(F) 对于InnoDB存储引擎的表,记录默认先后会以 主键、唯一索引、内部列 依次存放,选择好的主键很重要。同时,普通索引会保存主键的键值,主键要尽可能选择短的数据类型。
三、BTREE索引和HASH索引
(A) HASH索引的特点:
只用于=和<=>操作符的等式比较。
优化器不能使用HASH索引来加速ORDER BY 操作。
MySQL不能确定两个值之间大约有多少行。
只能使用整个关键词来搜索一行。
(B) BTREE索引的特点
使用 >、<、>=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern‘(不以通配符开始)操作符时,都可以使用索引。
四、小结
大多数MySQL索引使用BTREE中存储,空间列类型的索引使用RTREE。
MySQL索引的设计和使用的更多相关文章
- MySQL索引的设计、使用和优化
原文:http://bbs.landingbj.com/t-0-243071-1.html MySQL索引概述 所有MySQL列类型可以被索引.对相关列使用索引是提高SELECT操作性能的最佳途径.根 ...
- 深入浅出分析MySQL索引设计背后的数据结构
在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从 ...
- mysql 开发基础系列15 索引的设计和使用
一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法. 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字 ...
- MySQL索引设计不可忽视的知识点
本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL——索引基础 首先,我们将从索引基础开始介绍一下什么 ...
- MySQL 索引设计概要
在关系型数据库中设计索引其实并不是复杂的事情,很多开发者都觉得设计索引能够提升数据库的性能,相关的知识一定非常复杂. 然而这种想法是不正确的,索引其实并不是一个多么高深莫测的东西,只要我们掌握一定的方 ...
- mysql索引设计
mysql索引设计 1.B树与B+树的区别?B-Tree:一个节点可以拥有大于2个子节点的平衡多叉树,所有关键字在整颗树中出现,包括在非叶子节点也能命中, 叶子节点之间没有链表B+Tree:每个叶子节 ...
- mysql索引设计的注意事项
mysql索引设计的注意事项 目录 一.索引的重要性 二.执行计划上的重要关注点 (1).全表扫描,检索行数 (2).key,using index(覆盖索引) (3).通过key_len确定究竟使用 ...
- MySql(二)索引的设计与使用
MySql(二)索引的设计与使用 一.索引概述 二.设计索引的原则 三.BTREE索引与HASH索引 一.索引概述 所有Mysql列类型都可以被索引,对相关列使用索引时提高select操作性能的最佳途 ...
- MySql数据表设计,索引优化,SQL优化,其他数据库
MySql数据表设计,索引优化,SQL优化,其他数据库 1.数据表设计 1.1数据类型 1.2避免空值 1.3text类型优化 2.索引优化 2.1索引分类 2.2索引优化 3.SQL优化 3.1分批 ...
随机推荐
- 2016中国·西安“华山杯”WriteUp- SeeSea
题目打包下载:https://yunpan.cn/ckyrKxHJDPAIN (提取码:bbaf) Web 1.签到(10) 扫码回复 hs_ctf拿flag, 套路题. flag_Xd{hSh_ct ...
- Sublime Text 3 3126 注册码 + 下载地址
Sublime Text 3 3126 下载地址 Windows版本 64位:https://download.sublimetext.com/Sublime%20Text%20Build%2031 ...
- 仿原生app,native特效
为解决手机端wap项目中页面跳转响应慢的问题,基于jquery开发了fr.routeApp.js,使得wap项目拥有原生app的流畅,跳转时亦有native的特效 html部分 <!--定义容器 ...
- 2016-2017-2《程序设计与数据结构》学生博客&git@OSC
2016-2017-2<程序设计与数据结构>学生博客&git@OSC 博客园 20162301张师瑜 20162302杨京典 20162303石亚鑫 20162304张浩林 201 ...
- .net Core学习笔记:Windows环境搭建
1.安装 VS2015 Update3.如果已经安装了VS2015,但不是Update3版本,请在VS的工具 --> 扩展与更新 中执行update3的升级(大约需要2小时). 2..net C ...
- Editplus常用快捷键
EditPlus 快捷键的使用 如果一个来你们公司面试程序员,连Ctrl + C 和Ctrl + V 都不用,而是使用“选中文本”→ 鼠标右键 → [复制],然后再鼠标右键→ [粘贴].你会不会录用他 ...
- 【腾讯GAD暑期训练营游戏程序班】游戏中的物理系统作业说明文档
一.需求分析• 添加一辆新NPC车,可以让其与主角车碰撞:• 添加一些新物件,能够与车互动,在其触发事件将其移除:• 添加一些无法撞动的事件:• 添加NPC车的自动移动逻辑:• 在课上赛车的示例上添加 ...
- 关于获取、设置css样式封装的函数入门版
<html> <head> <meta charset="UTF-8"> <title>CSS样式的获取和设置:简单版</ti ...
- BZOJ 1086: [SCOI2005]王室联邦
1086: [SCOI2005]王室联邦 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1399 Solved: ...
- 打电话,发短信,发邮件,app跳转
1.打电话 - (IBAction)callPhone1:(id)sender { NSURL *url = [NSURL URLWithString:@"tel://18500441739 ...