(2.8)Mysql之SQL基础——索引的分类与使用

按逻辑分类:

1、主键索引(聚集索引)(也是唯一索引,不允许有空值)

2、普通索引或单列索引

3、多列索引(复合索引)

4、唯一索引或非唯一索引(非唯一索引其实就是普通/多列索引)

5、空间索引

6、创建索引的基本形式

7、索引的操作

1.查看索引
2.创建单列索引
3.复合索引
4.唯一索引(允许多个空值,每列唯一)
5.主键索引(不允许空值,唯一)
6.索引的删除
7.删除自增auto_increment

 

6.创建索引的基本形式

create [unique|fulltext|spatial] index index_name

[index_type]

  on table_name(index_col_name,...)

[index_option]

[alogorithm_option | lock_option]...

index_colname:

  col_name[(length)][asc | desc]

1.[unique|fulltext|spatial]  可选参数,分别是唯一索引、全文索引、空间索引2.index 创建索引的关键字,或者也可以用(key)3.index_col_name 表中要创建索引的列对象4.index_name 创建的索引名字5.length 可选参数,索引的长度,只能用于字符串6.[asc | desc] 索引值得存储方式

最简单最常用的方式:  create index 索引名 on 表名(列名);  create index ix_test101_id on test101(id);  create index ix_test101_name on test101(name(10)); #截取该字段前10个字符作为索引  alter table test101 add index 索引名(列名);

7、索引的操作

0.建表时创建索引

  create table test102(id int primary key auto_increment,name varchar(12),description varchar(200),index ix_test102_description(description));

1.查看索引
  show index from table_name;

2.单列索引
  create index 索引名 on 表名(列名);
  create index ix_test101_id on test101(id);
  create index ix_test101_name on test101(name(10)); #截取该字段前10个字符作为索引
  alter table test101 add index 索引名(列名);

3.复合索引
  create index 索引名 on 表名(列名1,列名2);
  alter table test101 add index 索引名(列名1,列名2);

4.唯一索引(允许多个空值,每列唯一)  create unique index 索引名 on 表名(列名);  alter table test101 add unique index 索引名(列名);
5.主键索引(不允许空值,唯一)  alter table test101 add primary key (列名)  
6.索引的删除
  1).单列/多列/唯一索引删除:drop index 索引名 on 表名;  or   alter table test101 drop  2).主键索引删除: alter table test101 drop primary key;(如果有自增字段,需要先删除自增)

7.删除自增auto_increment  alter table test101 change id int;

原文地址:https://www.cnblogs.com/gered/p/10381282.html

时间: 2024-08-19 05:27:47

(2.8)Mysql之SQL基础——索引的分类与使用的相关文章

MySQL之SQL基础

SQL是Structure Query Language(结构化查询语言)的缩写,它是关系型数据库的应用语言,由IBM在20世纪70年代开发,以实现关系型数据库中的信息检索. 在20世纪80年代初,美国国家标准局(ANSI)开始着手制定SQL标准,最早的ANSI标准于1986年完成,就被叫做SQL-86.正是由于SQL语言的标准化,所以大多数关系型数据库都支持SQL语言,它已经发展成为多种平台进行交互操作的底层会话语言. SQL的分类: DDL:数据定义语言,即是对数据库内部对象进行创建.删除.

Mysql慢SQL与索引案例

写在最前 关于慢sql的开启与配置查看之前我整理的文章: http://www.cnblogs.com/hanxiaobei/p/5515624.html 前提准备: tomcat7.x mysql--Perfteach jmeter 测试接口:192.168.1.102:8081/PerfTeach/SlowQuery?cardNO=1000009 脚本编写: 单接口的测试jmeter比较方便,所以本文就用jmeter进行测试 环境搭建及测试: 1.配置Perfteach包 连接本地数据库(P

SQL基础--索引

索引的概念: 在数据库中索引是用于提升数据库查询操作性能的一种手段,但在频繁更新的表上,索引反而会降低性能. 常用的索引结构: B*树索引 位图索引 B树索引: B书索引是最基本的索引结构,Oracle中默认建立的索引类型就是此类型索引, 一般B数索引在检索高基数数列(该例重复内容较少或没有)的时候可以提供高性能检索 B书索引采用的就是用的二叉树排列,在叶子节点中有ROWID的值,用ROWID这种方式查询效率是最高的.  B树索引建立语法: create index  [用户名.]索引名称  o

MySQL教程 SQL基础查询

其实在数据库最经常用的当属查询操作 基本语法 SELECT [ALL | DISTINCT | DISTINCTROW ] 字段列表 AS 字段别名 [FROM 表名 WHERE 条件表示式 GROUP BY 字段名|表达式 [ASC | DESC], ... [WITH ROLLUP]] [HAVING 条件表达式] [ORDER BY 字段名|表达式 [ASC | DESC] , ...] [LIMIT {[offset,] row_count | row_count OFFSET offs

(2.7)Mysql之SQL基础——表的操作与查看

搜索关键字:mysql表操作 1.创建表(在innodb下) 1.1.create table table_name(column type) ENGINE=innodb default CHARSET=UTF8  COLLATE=utf8_general_ci COMMENT='this is a test~';  --常规默认方式 create table table_name(column type)  选项 1.2.create table table_name like old_tab

着重基础之—MySql 不能遗忘的索引操作

着重基础之—MySql 不能遗忘的索引操作 关于MySql索引的基础知识我就不在这里写了,我不太想当信息的搬运工. 技巧分享:Workbench 作为一款专为MySQL设计的ER/数据库建模工具.除了管理数据库外,其实也是一款Sql语句生成利器.合理利用,将带来事半功倍的效果.当然,前提是我们对基础知识的了解. 我先来整理一些索引操作的Sql语句,之所以整理,起因是我遇到问题时,在百度里查到的回复,基本上都是错的,需要有人来纠正. 1.多主键(PRIMARY)删除 假设场景:你在表里定义了多个主

Oracle实践--PL/SQL基础之视图和索引

PL/SQL基础入门之视图和索引         PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. -----------------------------------

优化、分析Mysql表读写、索引等操作的sql语句效率优化问题

为什么要优化: 随着实际项目的启动,数据库经过一段时间的运行,最初的数据库设置,会与实际数据库运行性能会有一些差异,这时我们 就需要做一个优化调整. 数据库优化这个课题较大,可分为四大类: >主机性能>内存使用性能>网络传输性能>SQL语句执行性能[软件工程师]下面列出一些数据库SQL优化方案: (01)选择最有效率的表名顺序(笔试常考) 数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理,在FROM子句中包含多个表的情况下,你必须选择

Mysql表读写、索引等操作的sql语句效率优化问题

上次我们说到mysql的一些sql查询方面的优化,包括查看explain执行计划,分析索引等等.今天我们分享一些 分析mysql表读写.索引等等操作的sql语句. 闲话不多说,直接上代码: 反映表的读写压力 SELECT file_name AS file, count_read, sum_number_of_bytes_read AS total_read, count_write, sum_number_of_bytes_write AS total_written, (sum_number