Mysql哪些地方需要建立索引 Mysql需要建立索引的地方是哪些

因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。

另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。

索引既然这么重要,那么应该在什么情况下建立索引,在什么情况下又不能建立索引呢?

下面分享Mysql是否需要建立索引的九大场景:

1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:

a、正确选择复合索引中的主列字段,一般是选择性较好的字段;

b、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;

c、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;

d、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;

e、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;

8、频繁进行数据操作的表,不要建立太多的索引;

9、删除无用的索引,避免对执行计划造成负面影响;

时间: 2024-09-20 00:27:24

Mysql哪些地方需要建立索引 Mysql需要建立索引的地方是哪些的相关文章

《MySQL DBA修炼之道》——3.5 索引

3.5 索引 3.5.1 索引介绍 数据库索引,是数据库管理系统中一个排序的数据结构,用于协助快速查询.更新数据库表中的数据.它类似于书本上的索引,通过索引可以更便捷地找到书里面的内容而不需要查阅整本书.对于海量数据的检索,索引往往是最有效的. 目前MySQL主要支持的几种索引有:B树索引(B-tree).散列索引(hash).空间索引(R-tree)和全文索引(full-text).如果没有特别指明,本书指的就是B-Tree索引.由于索引是在存储引擎层实现的,所以不同的存储引擎的索引实现会有一

mysql 如何创建索引?mysql创建索引

mysql索引作用 在索引列上,除了有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. mysql索引创建规则: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引 4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引: 5.索引应该建在选择性高的字段上: 6.索引应该建在小字段上,对于大的文本字段甚至超长字

MYSQL中常用的强制性操作(例如强制索引)_Mysql

其他强制操作,优先操作如下: mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的. 强制索引 FORCE INDEX 复制代码 代码如下: SELECT * FROM TABLE1 FORCE INDEX (FIELD1) - 以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引. 忽略索引 IGNORE INDEX 复制代码

正确理解Mysql中的列索引和多列索引_Mysql

Mysql数据库提供两种类型的索引,如果没正确设置,索引的利用效率会大打折扣却完全不知问题出在这. 复制代码 代码如下: CREATE TABLE test (    id         INT NOT NULL,    last_name  CHAR(30) NOT NULL,    first_name CHAR(30) NOT NULL,    PRIMARY KEY (id),    INDEX name (last_name,first_name)); 以上创建的其实是一个多列索引,

MySQL索引之哈希索引和自适应哈希索引(Adaptive Hash Index)

MySQL索引之哈希索引和自适应哈希索引(Adaptive Hash Index)  官网:https://dev.mysql.com/doc/refman/5.6/en/innodb-adaptive-hash.html 索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 从MySQL逻辑架构来看,MySQL有三层架构,第一层连接,第二层查询解析.分析.优化.视图.缓存,第三层,存储引擎. 索引通过分开查询片,节省了扫描查找时间,大大

python-关于mysql中的位图索引和位片索引问题

问题描述 关于mysql中的位图索引和位片索引问题 老师给了一个作业要求利用其他语言例如Python或者C++来实现位图索引,但是一直教的就是mysql,没要办法建位图索引啊.不知道怎么办才好了,求大神指导... 解决方案 Mysql 索引 解决方案二: http://www.cnblogs.com/yuerdongni/p/4255395.html

MySQL 查询索引的选择性、索引字段、注释等基本信息的SQL

链接:http://blog.itpub.net/28602568/viewspace-1819474/ 标题: MySQL 查询索引的选择性.索引字段.注释等基本信息的SQL 作者:lōττéry版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.] 如下sql 用于统计mysql数据库非系统db的全部表/索引信息  (包括:数据库.表名.表注释.表行数.表大小.索引名.索引字段.字段注释.基数.选择性比.索引类型..) SQL:      SELECT t.table_sc

使用Solr索引MySQL数据

环境搭建 1.到apache下载solr,地址:http://mirrors.hust.edu.cn/apache/lucene/solr/ 2.解压到某个目录 3.cd into D:\Solr\solr-4.10.3\example 4.Execute the server by "java -jar startup.jar"Solr会自动运行在自带的Jetty上 5.访问http://localhost:8983/solr/#/ PS:solr-5.0 以上默认对schema的管

cmd-数据库建立连接 mysql

问题描述 数据库建立连接 mysql 刚刚安装了mysql 怎么创建和连接数据库 需要在cmd输入什么命令 才能创建用户?? 我想创建一个hr用户 密码为123456该怎么设置? 解决方案 grant all privileges on *.* to hr@172.18.10.1 identified by '123456'; 解决方案二: 先在mysql client 控制台,用root用户登录,然后创建hr这个用户.然后授权hr这个用户在你这个机器上登录. CREATE USER 'user