`

mysql创建索引规则

阅读更多
MySql在建立索引优化时需要注意的问题

设计好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代替,id3则可使用id>3 or id
分享到:
评论

相关推荐

    MySQL创建全文索引分享

    在MySql中,创建全文索引相对比较简单。例如:我们有一个文章表(article),其中有主键ID(id)、文章标题(title)、文章内容(content)三个字段。现在我们希望能够在title和content两个列上创建全文索

    MySQL字符串索引更合理的创建规则讨论

    针对使用MySQL的索引,我们之前介绍过索引的最左前缀规则,索引覆盖,唯一索引和普通索引的使用以及优化器选择索引等概念,今天我们讨论下如何更合理的给字符串创建索引。 如何更好的创建字符串索引 我们知道,...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 第二十课MySQL索引和调优.pdf │ 第二课MySQL入门介绍.pdf │ 第五课MySQL常用函数介绍.pdf │ 第八课InnoDB内核.pdf │ 第六课SQL高级应用.pdf │ 第十一课MySQL表分区8.0.pdf │ 第十七课Elasticsearch分享-...

    Mysql面试过关!(详解:索引+常用引擎+常见问题+sql调优)

    3.6 查询条件使用or关键字,其中一个字段没有创建索引,则会导致整个查询语句索引失效; or两边为“>”和“<”范围查询时,索引失效 3.7 两列数据做比较,即便两列都创建了索引,索引也会失效 3.8 查询条件使用不等...

    高性能MySQL(第3版).part2

    7.10.3MySQL5.1中全文索引的变化303 7.10.4全文索引的限制和替代方案304 7.10.5全文索引的配置和优化306 7.11分布式(XA)事务307 7.11.1内部XA事务307 7.11.2外部XA事务308 7.12查询缓存309 7.12.1MySQL如何...

    mysql索引对排序的影响实例分析

    本文实例讲述了mysql索引对排序的影响。分享给大家供大家参考,具体如下: 索引不仅能提高查询速度,还可以添加排序速度,如果order by 后面的语句用到了索引,那么将会提高排序的速度。 测试 1、创建测试表:t15表 ...

    掌握MySQL面试技巧.pptx

    3、MySQL约束:约束是用来限制MySQL数据表中数据输入的规则,包括主键约束、外键约束、唯一约束、非空约束等。在MySQL面试中,候选人需要了解各种约束的含义和使用方法,以及如何避免约束冲突等问题。

    mysql数据库my.cnf配置文件

    # MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区 myisam_max_sort_file_size = 10G # 如果临时文件会变得超过索引,不要使用...

    mysql网络数据库指南(中文版) part1

    3.4 创建、删除、索引和更改表 102 3.4.1 CREATE TABLE语句 102 3.4.2 DROP TABLE 语句 106 3.4.3 创建和删除索引 106 3.4.4 ALTER TABLE语句 109 3.5 获取数据库和表的有关信息 111 3.6 检索记录 112 3.6.1 ...

    mysql 数据库 掌握关系数据库SQL语言和使用技术

    了解数据管理技术发展的过程,掌握数据库系统的基本概念、体系结构 MySQL的安装和配置 ...掌握创建索引、视图,快速访问数据库 掌握创建存储过程、触发器,实现复杂的业务规则 备份和恢复 安全和权限

    Mysql 索引结构直观图解介绍

    一.模拟创建原始数据 下图中,左边是自己方便说明,...创建索引 a 如下图,当创建索引a以后,在该索引结构中,从原来的按照主键ID排序,变成了新的规则,我们说索引其实就是一个数据结构。则建立索引a,就是新另建立

    mysql聚簇索引的页分裂原理实例分析

    本文实例讲述了mysql聚簇索引的页分裂。分享给大家供大家参考,具体如下: 在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存储引擎是采用聚簇索引的。 聚簇结构的特点: 根据主键查询条目时,不用回行(数据就在主键...

    MySQL高级特性篇.txt

    MySQL课程天花板:6大范式讲解、7大日志剖析、7大SQL性能分析工具、9大存储引擎剖析、10大类30小类优化场景、15个不同锁的应用讲解、18种创建索引的规则、300+张高清无码技术剖析图

    mysql数据库的基本操作语法

    创建索引方式: 自动:当表上定义主键约束、唯一、外键约束时,该表会被系统自动添加上索引。 手动:手动在相关表或列上增加索引,提高查询速度。 删除索引方式: 自动:当表对象被删除时,该表上的索引自动被删除...

    MYSQL网络数据库PDF学习资源

    3.4 创建、删除、索引和更改表 102 3.4.1 CREATE TABLE语句 102 3.4.2 DROP TABLE 语句 106 3.4.3 创建和删除索引 106 3.4.4 ALTER TABLE语句 109 3.5 获取数据库和表的有关信息 111 3.6 检索记录 112 3.6.1 平凡...

    MySQLDBA运维笔记.pdf

    1.2.6 创建存放两个 mysql 实例的数据目录...............................................................11 1.2.7 创建两个 mysql 多实例的配置文件.............................................................

Global site tag (gtag.js) - Google Analytics