mysql数据库索引(四)

1、索引的创建

create index user_index on user(uname);

2、查看表中的索引

show index from table_name;

3、删除索引

drop index user_index on table_name;

4、使用索引的优点

1、可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性;
2、建立索引可以大大提高检索的数据,以及减少表的检索行数;
3、在表连接的连接条件 可以加速表与表直接的相连;
4、在分组和排序字句进行数据检索,可以减少查询时间中分组和 排序时所消耗的时间(数据库的记录会重新排序);
5、建立索引,在查询中使用索引 可以提高性能。

5、使用索引的缺点

1、在创建索引和维护索引 会耗费时间,随着数据量的增加而增加;
2、索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间;
3、当对表的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护,这样就会降低数据的维护速度,(建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快)。

6、注意索引的使用

  要建立索引,要按照实际数据情况来看,哪些需要建立索引,哪些是多余的;

1、在经常需要搜索的列上,可以加快索引的速度;
2、主键列上可以确保列的唯一性;
3、在表与表的而连接条件上加上索引,可以加快连接查询的速度;
4、在经常需要排序(order by),分组(group by)和的distinct 列上加索引, 可以加快排序查询的时间,  (单独order by 用不了索引,索引考虑加where 或加limit);
5、索引不会包含NULL列,如果列中包含NULL值都将不会被包含在索引中,复合索引中如果有一列含有NULL值那么这个组合索引都将失效,一般需要给默认值0或者 ‘ ‘字符串;
6、使用短索引,如果你的一个字段是Char(32)或者int(32),在创建索引的时候指定前缀长度 比如前10个字符 (前提是多数值是唯一的..)那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少I/0操作;
7、不要在列上进行运算,这样会使得mysql索引失效,也会进行全表扫描。

7、哪些情况下需要创建索引?哪些情况下不要创建索引?

1、主键自动建立唯一索引;
2、频繁作为查询条件的字段应该创建索引;
3、查询中与其他表有关联的字段,例如外键关系;
4、频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引,保存索引文件;
5、where条件里用不到的字段,不创建索引;
6、高并发的情况下一般选择复合索引;
7、查询中排序的字段创建索引将大大提高排序的速度(索引就是排序加快速查找);
8、查询中统计或者分组的字段;
9、表记录太少,不需要创建索引;
10、经常增删改的表;
11、数据重复且分布平均的字段,因此为经常查询的和经常排序的字段建立索引。注意某些数据包含大量重复数据,因此他建立索引就没有太大的效果,例如性别字段,只有男女,不适合建立索引。

原文地址:https://www.cnblogs.com/newbest/p/9736916.html

时间: 2024-10-19 19:29:50

mysql数据库索引(四)的相关文章

MySQL数据库------索引

MySQL数据库------索引 一.索引的介绍 数据库中专门用于帮助用户快速查找数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置吗,然后直接获取. 二 .索引的作用 约束和加速查找 三.常见的几种索引: 普通索引,唯一索引,主键索引(这几个都是单列) 联合索引(多列),比如:联合主键索引.联合唯一索引.联合普通索引 无索引和有索引的区别以及建立索引的目的 无索引: 从前往后一条一条查询有索引:创建索引的本质,就是创建额外的文件(某种格式存储,查询的时候,先

Mysql数据库索引

索引(Index)是帮助mysql高效获取数据的数据结构.对于高性能非常关键. 索引的重要性主要体现在数据量非常大的时候.规模小,负载轻的数据库即使没有索引也可以获到好的查询效果 例如: 1 mysql>select first_name from actor where actor_id=5; 改索引列位于actor_id列,因此mysql会使用索引找到actor_id为5的行. 索引有很多种类型,各自有各自的特点.索引实在存储引擎层实现的,而不是服务器层. (1).B-Tree索引 谈论引擎

第二百八十八节,MySQL数据库-索引

MySQL数据库-索引 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可. 如果没有创建索引查找数据时,是全表扫描的,也就是向查字典一样没有目录,靠一页一页的翻到目标数据位置,这样如果数据量大会相当耗时, 索引就是快速帮助用户找到目标数据,节省时间 索引简介 索引是以B+tree方式的树形结构存放数据的 详情,可以网上搜索一下B+tree MySQL中常见索引有: 普通索引 唯一索引 主键索引 组合索

php教程:MySql数据库索引原理

PHP教程有好几天都没有给大家带来关于PHP方面的知识啦,今天补上啊!本文这要讲述的是:MySql数据库索引原理,希望能对大家带来帮助! 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. 第二部分结合MySQL数据库中InnoDB数据存储引擎中索引的架构实现讨论聚集索引.非聚集索引及覆盖索引等话题. 第三部分讨论MySQL中高性能使用索引的策略. 一.数据结构及算法理论 Innodb存储引擎实现索引的数据结构是B+树,下面介绍几种数据结构,一步步阐述为什么要使用B+树 1

MySQL数据库索引的4大类型以及相关的索引创建

以下的文章主要介绍的是MySQL数据库索引类型,其中包括普通索引,唯一索引,主键索引与主键索引,以及对这些索引的实际应用或是创建有一个详细介绍,以下就是文章的主要内容描述. (1)普通索引 这是最基本的MySQL数据库索引,它没有任何限制.它有以下几种创建方式: 创建索引 CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度:如果是BLOB和TEXT类型,必须指定 lengt

如何正确合理的建立MYSQL数据库索引

如何正确合理的建立MYSQL数据库索引 索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable( IDINTNOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin

MySQL数据库索引常见问题

笔者看过很多数据库相关方面的面试题,但大多数答案都不太准确,因此决定在自己blog进行一个总结. Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+树).能够加快访问数据的速度,尤其是范围数据的查找非常快.缺点是只能从索引的最左列开始查找,也不能跳过索引中的列,如果查询中有某个列用到了范围查询,则右边所有列都无法使用索引优化查找. 2.哈希索引:基于哈希表实现.在MySQL中,只有Memory引擎显式的支持哈希搜索.哈希查找的速度非常快,但哈希

MySQL数据库索引的底层原理(二叉树、平衡二叉树、B-Tree、B+Tree)

1.MySQL数据库索引的底层原理 https://mp.weixin.qq.com/s/zA9KvCkkte2mTWTcDv7hUg 原文地址:https://www.cnblogs.com/frankyou/p/11269673.html

mysql数据库索引类型和原理

索引初识: 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. CREATE TABLE mytable ( id serial primary key, category_id int not null default 0, user_id int not null default 0, adddate int not null default 0 ); 很简单吧,不过对于要说明这个问题,已经足够了.如果你在查询时常用类似以下的语句: SELECT *

如何正确建立MYSQL数据库索引

索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  );   我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找username="admin"的记录