`

mysql索引笔记

阅读更多
  1.用于索引的最好的备选数据列是那些出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。

  2.什么情况下应不建或少建索引?
  a. 表记录太少
  b. 经常插入、删除、修改的表
  c. 经常和主字段一块查询但主字段索引值比较多的表字段

  3.复合索引的创建:
比如有一条语句是这样的:
    select * from users where area=’beijing’ and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。
    如果我们创建了(area, age,salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀

  4.复合索引的建立以及最左前缀原则:
     如果你需要索引一个字符串数据列,那么最好在任何适当的情况下都应该指定前缀长度。你可以索引CHAR、VARCHAR、BINARY、VARBINARY、BLOB和TEXT数据列的前缀。
      假设你在表的state、city和zip数据列上建立了复合索引。索引中的数据行按照state/city/zip次序排列,因此它们也会自动地按照state/city/zip次序排列。这意味着,即使你在查询中只指定了state值,或者指定state和city值,MySQL也可以使用这个索引。因此,这个索引可以被用于搜索如下所示的数据列组合:(state, city, zip)(state, city)(state)

  5.索引不会包含有NULL值的列
    只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

    6.mysql查询只使用一个索引.
    因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

   7.一般情况下不鼓励使用like操作.
    如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。

  8.不要在列上进行运算,select * from users where YEAR(adddate)

   9.不使用NOT IN操作:
     NOT IN操作不会使用索引将进行全表扫描。NOT IN可以用NOT EXISTS代替.
分享到:
评论

相关推荐

    mysql索引笔记1

    其他创建索引的方式添加主键索引ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) 添加唯一索引ALTER T

    MySQL索引 使用笔记

    NULL 博文链接:https://zsg86.iteye.com/blog/1612385

    数据库 MySQL 学习笔记高级篇.md

    数据库 MySQL 学习笔记高级篇.md

    MYSQL学习笔记-索引

    MYSQL学习笔记-索引MYSQL学习笔记-索引MYSQL学习笔记-索引

    MySQL高级笔记.zip

    MySQL 高级 - 索引 - 索引分类 P9 day01-10. MySQL 高级 - 索引 - 索引语法 P10 day01-11. MySQL 高级 - 索引 - 索引设计原则 P11 day01-12. MySQL 高级 - 视图 - 概述 P12 day01-13. MySQL 高级 - 视图 - 创建及...

    mysql高级笔记,mysql索引、存储过程、查询缓存、并发参数调整、MyISAM表锁、系统性能优化

    mysql高级笔记,mysql索引、存储过程、查询缓存、并发参数调整、MyISAM表锁、系统性能优化

    mysql索引和执行计划的使用

    MySQL索引的最佳实践和执行计划的使用分析,包括索引的设计原则,SQL语句的优化原则等

    mysql学习笔记.xmind

    非常详细的mysql学习笔记,3积分绝对值。内容分为基础架构、日志系统、事务隔离、索引、锁、sql偶尔变慢的问题、数据空洞、排序、慢sql解析九大模块。

    鲁班学院MySQL课堂笔记(B+树索引,事务,锁)

    鲁班学院Mysql课堂笔记,探索InnoDB索引原理,数据库事务,锁的概念 一、InnoDb行格式、数据页结构以及索引底层原理分析 二、B+树索引实战 三、Mysql事务以及锁原理讲解

    非常详细的某培训机构mysql学习笔记

    MySQL索引 MySQL视图 MySQL触发器 MySQL存储过程与函数 MySQL3 MySQL安全机制 MySQL日志管理 MySQL数据备份 备份概述 mysqldump [逻辑] mydumper [逻辑] into outfile [逻辑] xtrabackup [物理] ...

    Mysql学习笔记.pdf

    Mysql学习笔记 1. MYSQL 体系架构、特性、基本概念 2. 基本数据类型 3. 数据对象: 表、 索引、 视图 4. 基本 SQL 语法、 Mysql 语法 5. 常用函数 6. 事务、 锁相关 7. 性能优化

    韩顺平mysql优化笔记.doc

    韩顺平mysql优化笔记.doc Mysql数据库的优化技术 对mysql优化时一个综合性的技术,主要包括 a: 表的设计合理化(符合3NF) b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] c: 分表...

    mysql高级笔记 P1 day01-02. MySQL 高级 - Linux上安装MySQL P2 day01-03. MyS

    mysql高级笔记 P1 day01-02. MySQL 高级 - Linux上安装MySQL P2 day01-03. MySQL 高级 - 启动及登录MySQL P3 day01-04. MySQL 高级 - 索引 - 概述 P4 day01-05. MySQL 高级 - 索引 - 优势和劣势 P5 day01-06. MySQL ...

    mysql优化笔记.doc

    b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引] c: 分表技术(水平分割、垂直分割) d: 读写[写: update/delete/add]分离 e: 存储过程 [模块化编程,可以提高速度] f: 对mysql配置优化...

    MySQL学习笔记(含基础、运维、进阶三部分)

    MySQL学习笔记(含基础、运维、进阶三部分) MySQL学习笔记(含基础、运维、进阶三部分) MySQL学习笔记(含基础、运维、进阶三部分) 包含了我学习 MySQL 过程中的笔记和资源,从入门到进阶的内容都有涉及。通过...

    MYSQL学习笔记-索引[文].pdf

    MYSQL学习笔记-索引[文].pdf

    mysql基础笔记

    1.2 mysql索引 1.3 mysql试图 1.4 mysql 内置函数 1.4.1 字符串函数 1.4.2 数学函数 1.5 mysql预处理语句 1.6 mysql事务处理 1.7 mysql存储 1.8 mysql触发器(trigger) 1.9 重排auto_increment值

    Mysql的索引详解学习笔记.zip

    Mysql的索引详解学习笔记

    MySQL优化文档笔记

    MySQL Server中的核心组件有 连接器:负责对接客户端提交的连接请求 分析器:对发送过来的语句进行词法分析 和语法分析 优化器: 基于CBO的方式来对语句进行基础优化,并规定执行路径 执行器: 用来根据优化后的语句...

Global site tag (gtag.js) - Google Analytics