`

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

    MySQL 是一种广泛使用的开源关系型数据库管理系统,其索引机制对于提升查询性能至关重要。本文将深入探讨MySQL中的索引及其相关知识点。 首先,我们来了解索引的优点和缺点。索引如同书籍的目录,能够快速定位到...

    MySQL索引 使用笔记

    【MySQL索引 使用笔记】 MySQL数据库是世界上最流行的开源关系型数据库管理系统之一,其高效的数据查询能力在很大程度上依赖于索引。本笔记将深入探讨MySQL中的索引使用,旨在帮助你提升数据库性能。 1. 索引的...

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

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

    mysql优化笔记+资料

    以下是一份详细的MySQL优化笔记,涵盖了多个方面: 一、查询优化 1. 使用索引:为经常用于搜索的列创建索引可以显著加快查询速度。B树和哈希索引是最常见的类型,适用于不同的查询场景。 2. 避免全表扫描:尽量使用...

    尚硅谷mysql笔记.zip

    尚硅谷的MySQL笔记可能是为了帮助学习者深入理解和掌握MySQL的相关知识而编写的。这份笔记可能包含了从基础概念到高级特性的全面讲解,包括但不限于SQL语言、数据类型、数据库设计、索引、事务处理、视图、存储过程...

    MySQL高级笔记.zip

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

    狂神MySQL笔记.rar

    【狂神MySQL笔记】是一份全面且深入的MySQL学习资源,涵盖了从基础到高级的各种MySQL技术知识点。作为数据库领域的核心工具,MySQL因其高效、稳定、开源等特性,被广泛应用于各种规模的企业和项目中。这份笔记旨在...

    MYSQL学习笔记-索引

    ### MySQL学习笔记—索引详解 #### 索引的重要性 在MySQL中,索引扮演着极其重要的角色,尤其在处理大数据量时更是如此。合理的索引设计不仅可以大幅提升查询性能,还能有效降低服务器资源消耗。根据给定的信息,...

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

    MYSQL学习笔记-索引 MYSQL学习笔记-索引是一篇关于MYSQL数据库索引的详细笔记,涵盖了索引的基本概念、类型、创建方法以及使用场景。下面是笔记中的主要知识点: 一、索引的基本概念 * 在数据库表中,使用索引...

    MySQL学习笔记.zip

    这份“MySQL学习笔记”将引导我们深入理解其核心概念和实用技能。 一、MySQL简介 MySQL是一个开源、免费的数据库系统,由瑞典的MySQL AB公司开发,后被Oracle公司收购。它的设计目标是速度、可移植性和简洁性,支持...

    mysql索引和执行计划的使用

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

    mysql学习笔记.rar

    首先,"mysql学习笔记.doc"很可能是核心的学习资料,它可能包含了MySQL的基础概念、安装与配置、SQL语言基础、数据类型、数据库设计、表的创建与管理、索引、视图、存储过程、触发器、事务处理、备份与恢复、性能...

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

    鲁班学院的这份课堂笔记深入浅出地探讨了MySQL中的核心概念:B+树索引、事务处理以及锁定机制。 一、InnoDB行格式、数据页结构以及索引底层原理分析 InnoDB是MySQL中最常用的存储引擎,它支持事务处理和行级锁定。...

    MySQL笔记(狂神说java)

    "狂神说Java"的MySQL笔记可能深入探讨了如何在Java编程环境中与MySQL进行交互,这对于我们理解数据库管理和开发至关重要。以下是对这个主题的详细阐述: 1. **MySQL基础**: - 数据库概念:MySQL是一个用于存储和...

    mysql学习笔记.xmind

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

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

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

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

    首先,我们来讨论**MySQL索引**。索引是提高查询速度的关键,它在数据库中的作用类似于书籍的目录。B树、哈希索引和全文索引是常见的索引类型。B树索引适用于范围查询和排序,而哈希索引则适用于等值查询。全文索引...

    Mysql优化笔记包括网盘视频教程

    这份"Mysql优化笔记"的资源,结合了网盘视频教程,为学习者提供了全面而深入的学习材料,旨在帮助那些希望在MySQL优化领域深化理解的人。 首先,MySQL优化主要分为几个核心部分: 1. **SQL查询优化**:这是最基本...

    深入浅出MySQL-读书笔记byCZF

    MySQL是目前流行和广泛使用的开源关系型数据库管理系统,它在性能上有着出色的表现,成为众多开发者和企业的首选。在MySQL数据库的使用过程中,有多个关键的知识点需要掌握,以保障数据库的高效稳定运行。 首先,...

Global site tag (gtag.js) - Google Analytics