MySQL高级--索引 ---个人推荐比较实用

索引:
            概括:(相当于新华字典目录)主要是用于提升查询性能,可以快速访问定位数据库表中特定的信息,但是增删改性能降低
分类:
单列索引:一个单列索引只包含一个列
分为:
1、普通索引(最基本的索引,没有任何限制)
示例代码:ALTER TABLE extend_mobile ADD INDEX idx_city (city); idx_city索引名,自己取

2、唯一索引(索引列的值必须唯一,但允许有空值)
示例代码:ALTER TABLE extend_mobile add UNIQUE INDEX idx_code (CODE);
不允许有重复的值

3、主键索引(一种特殊的唯一索引,不允许有空值,一般建表时创建)
示例代码:ALTER TABLE ‘表名‘ ADD PRIMARY KEY(‘主键名字段‘);

4、全文索引(用于检索文本信息,仅限于MyISAM数据库引擎有效)
示例代码:ALTER TABLE ‘表名‘ ADD FULLTEXT(‘字段名‘);

组合索引:解释:一个组合索引包含两个或两个以上的列

分为
组合普通索引: ALTER TABLE extend_mobile ADD INDEX idx_city_provice (city, provice);
组合唯一索引

注意:组合索引遵循‘最左前缀原则’,意思就是建立索引的索引名必须跟查询的索引名顺序一致,,索引后面不能接运算,不能写空,null等,少用不等于,等于,可能造成索引失效

查看和删除索引
查看 : SHOW INDEX FROM ‘表名’
删除:DROP INDEX ‘索引名’ ON ‘表名’

使用索引的优点
可以通过建立唯一索引或者主键索引,保证数据唯一性
建立索引可以大大提高检索的数据,以及减少表的检索行为
建立索引可以加速表与表直接的相连,提升连表查询效率
在分组和排序字句进行数据检索,可以减少查询的时间中分组和排序时所消耗的时间(数据库的记录会重新排序)
建立连接可以在查询中使用索引,可以大大提高性能

使用索引的缺点
在创建索引和维护索引,会消耗时间,随着数据量的增加而增加
索引文件会占据物理空间,除了数据表需要占用物理空间之外,每个索引还会占用一定的物理空间
当对表的数据进行跟新操作时,索引也需要动态的维护,这样就会降低数据维护速度

原文地址:https://www.cnblogs.com/bdlz201002/p/11865335.html

时间: 2024-10-03 16:01:38

MySQL高级--索引 ---个人推荐比较实用的相关文章

MySQL高级-索引优化

索引失效 1. 2.最佳左前缀法则 4. 8. 使用覆盖索引解决这个问题.

Mysql高级之索引

原文:Mysql高级之索引 索引:是针对数据所建立的目录. 作用: 可以加快查询速度 负面影响: 降低了增删改的速度. 索引的创建原则: 1:不要过度索引 2:在where条件最频繁的列上加.在重复度高的列上不加,比如性别男女: 3:尽量索引散列值,过于集中的值加索引意义不大. 索引的类型 普通索引: index 仅仅是加快查询速度. 唯一索引: unique index 行上的值不能重复 主键索引: primary key 不能重复. 主键必唯一,但是唯一索引不一定是主键. 一张表上,只能有一

MySQL高级知识(五)——索引分析

前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表) 1)tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABLE `tb_emp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL,PRIMARY KEY

mysql高级、索引

一.mysql高级 1.视图 # 引子 select * from emp left join dep on emp.dep_id = dep.id union select * from emp right join dep on emp.dep_id = dep.id; create view temp(emp_id,emp_name,salary,dep_id,dep_id2,dep_name,work) as select * from emp left join dep on emp.

MySQL高级知识(三)——索引

前言:索引在sql调优部分占据着重要的位置,了解并深入索引对我们来说也是非常重要的.本篇主要介绍MySQL中索引的相关知识点. 1.索引是什么 MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构.因此索引的本质就是数据结构.索引的目的在于提高查询效率,可类比字典.书籍的目录等这种形式. 可简单理解为“排好序的快速查找数据结构”.在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高级查找算法,这

MySQL 高级知识(索引、优化)

MySQL体系架构 连接池组件.管理服务和工具组件.SQL接口组件.查询分析器组件.优化器组件.缓冲组件.插件式存储引擎.物理文件:1.连接层:主要完成一些类似于连接处理,授权认证及相关的方案:2.服务层:主要完成大多数核心服务功能:3.引擎层:负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信:注:储存引擎式基于表的,而不是数据库的: MySQL存储引擎InnoDB 和 MyISAM区别:1.InnoDB支持主外键.事务:2.InnoDB是行锁,操作时候只锁一行数据,适合高并

【转】【备忘录】MySQL性能优化的21个最佳实践 和 mysql使用索引

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被

ySQL性能优化的21个最佳实践 和 mysql使用索引

MySQL性能优化的21个最佳实践 和 mysql使用索引 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服

【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引

本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类型的例,并将其索引 6. 千万不要 ORDER BY RAND() 7. 避免 SELECT * 8. 永远为每张表设置一个ID 9. 使用 ENUM 而不是 VARCHAR 10. 从 PROCEDURE ANALYSE() 取得建议 11. 尽可能的使用 NOT NULL 12. Prepare