关闭

mysql索引相关

138人阅读 评论(0) 收藏 举报
explain 可以查看sql语句的执行情况,可以看到每个条件扫描的行数,当系统内需要使用SQL查询时,通过explain看下该语句的性能。

 

1.索引通常被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度。所以我们选择索引的列也通常选择出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。

2.数据列的不同的值越多,索引效果越好。如果一个数据列只包含:0或者1两个值的话,索引的用处就不大。

3.如果索引了多列,要遵守最左前缀法则。所谓最左前列,指的是查询从索引的最左前列开始,并且不跳过索引中的列。譬如对:t1,t2,t3建立联合索引的话,同时也是对t1和t1,t2建立了索引。但是如果单独指定t2、t3、t1t3、t2t3的值的话,都会用不到索引。

4.尽量比较数据类型相同的数据列。例如,INT与BIGINT是不同的。CHAR(10)被认为是CHAR(10)或VARCHAR(10),但是与CHAR(12)或VARCHAR(12)不同。

5.索引列不应该作为表达式的一部分,即也不能在索引列上使用函数。

6.在使用LIKE时,尽量不要在开头使用通配符

   WHERE col_name LIKE ’%string%’

   WHERE col_name LIKE ’abc%’

7.不要使用类型转换。如果某个索引列是int型,而在查询时,赋值为字符型,将使用不了索引。

    SELECT * FROM mytbl WHERE num_col = 1;使用索引

    SELECT * FROM mytbl WHERE num_col = ‘1’;没有使用索引

8.在SELECT语句中可以使用STRAIGHT_JOIN关键字来重载优化器的选择。left join时会选择结果集较小的表作为基准表,如果排序条件为另一张表的字段就有可能影响效率,STRAIGHT_JOIN可以指定顺序连接。

9.当MySQL一旦估计检查的行数可能会”太多”,范围查找优化将不会被使用。

10.尽量借用覆盖索引,减少select * from …语句使用;

11.ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序;

12.慎用left join语句,避免创建临时表 使用left join语句的时候,避免出现创建临时表。尽量不要用left join,分而治之。非要使用的时候,要询问自己是不是真要必须要使用。

0
0
查看评论

MySQL索引相关

转自http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/chenshishuo/p/5030029.html 推荐再去看看http://www.cnblogs.com/hustcat/archiv...
  • weixin_39718665
  • weixin_39718665
  • 2017-10-29 21:59
  • 57

MYSQL索引详解(学习记录)

一:什么是索引 1、索引   索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。 2. 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即...
  • w670268787
  • w670268787
  • 2016-08-08 09:12
  • 644

mysql索引原理相关问题

前言 索引的基本原理 索引的类型 锁机制 索引的优化 影响结果集 性能查询工具 mysql架构优化 缓存优化 一道思考题   &...
  • a9b9a9b9
  • a9b9a9b9
  • 2015-07-08 15:36
  • 186

总结Mysql索引相关知识

一、为什么使用数据索引能够提高效率? 关系型数据库的数据索引(BTREE及常见索引结构)的存储是有序的;在有序的情况下,通过索引查询一个数据是无需遍历索引记录的;关系性数据库数据索引的查询i侠侣趋近于二分法查询效率,趋近于log2(N);极端情况下(更i性能请求少,更新实时要求低,查询请求频繁)...
  • u012972536
  • u012972536
  • 2017-06-08 16:41
  • 131

mysql索引index相关命令

本文主要内容: 显示表中多有的索引show all index 添加索引ADD INDEX, 添加唯一索引add unique index 多列联合添加索引,primary key 关键词index vs key show all indexshow index from tb_name 例如:...
  • haluoluo211
  • haluoluo211
  • 2017-09-14 19:09
  • 2061

mysql索引相关笔记

mysql索引分为: 1.主键索引 2.唯一索引 3.普通索引 4.全文索引 其中1.2.3还可以分为单列索引和联合索引。 这里记录下全文索引的用法 引用 12.7. 全文搜索功能(http://dev.mysql.com/doc/refman/5.1/zh/functions.ht...
  • booooooooooooooooooo
  • booooooooooooooooooo
  • 2012-12-15 14:39
  • 375

mysql索引深入理解

详解b+树 如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁...
  • liyantianmin
  • liyantianmin
  • 2017-02-13 17:27
  • 401

MYSQL索引及其相关性能测试

以下部分为索引相关知识,记录以备忘。 1. 不应该创建索引的字段: 对于那些在查询中很少使用或者参考的列不应该创建索引。 索引不会包含有NULL值的列。 对于那些只有很少数据值的列也不应该增加索引。 对于那些定义为text, image和bit数据类型的列不应该增加索引。  ...
  • cdx1175179742
  • cdx1175179742
  • 2017-08-17 17:02
  • 124

MySQL索引使用方法及实例学

索引用于快速找到特定一些值的记录。如果没有索引,MySQL就必须从第一行记录开始读取整个表来检索记录。表越大,资源消耗越大。如果在字段上有索引的话,MySQL就能很快决定该从数据文件的哪个位置开始搜索记录,而无须查找所有的数据。如果表中有1000条记录的话,那么这至少比顺序地读取数据快100倍。注意...
  • hi_jess
  • hi_jess
  • 2009-10-08 11:30
  • 2669

[面试时]MySQL索引背后的数据结构及算法原理

文章转自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQ...
  • shawjan
  • shawjan
  • 2015-10-05 20:58
  • 589
    个人资料
    • 访问:31809次
    • 积分:747
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:11篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论