mysql数据索引 create index

什么是索引?

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
索引的类型:
普通索引:这是最基本的索引类型,没唯一性之类的限制。
唯一性索引:和普通索引基本相同,但所有的索引列只能出现一次,保持唯一性。
主键:主键是一种唯一索引,但必须指定为"PRIMARY KEY"。
全文索引:MYSQL从3.23.23开始支持全文索引和全文检索。在MYSQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。
单列索引和多列索引
索引可以是单列索引,也可以是多列索引。对相关列使用索引是提高SELECT操作性能的最佳途径。
多列索引:
MySQL可以为多个列创建索引。一个索引可以包括15个列。对于某些列类型,可以索引列的前缀。
多列索引可以视为包含通过连接索引列的值而创建的值的排序的数组。
MySQL按这样的方式使用多列索引:当你在WHERE子句中为索引的第1个列指定已知的数量时,查询很快,即使你没有指定其它列的值。
假定表具有下面的结构:
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));
name索引是一个对last_name和first_name的索引。索引可以用于为last_name,或者为last_name和first_name在已知范围内指定值的查询。因此,name索引用于下面的查询:
SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test    WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test    WHERE last_name='Widenius'    AND (first_name='Michael' OR first_name='Monty');
SELECT * FROM test    WHERE last_name='Widenius'    AND first_name >='M' AND first_name < 'N';
然而,name索引不用于下面的查询:
SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test    WHERE last_name='Widenius' OR first_name='Michael';

时间: 2024-10-29 12:09:30

mysql数据索引 create index的相关文章

MySQL 创建索引(Create Index)的方法和语法结构及例子_Mysql

CREATE INDEX Syntax CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_type] index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} 复制代码 代码如下: -- 创建无索引的表格 create t

sql创建表索引 create index()语句

sql创建表索引 create index()语句 mssql server 方法 语法: create [索引类型] index 索引名称 on 表名(列名) with fillfactor = 填充因子值0~100 go 实例 create nonclustered index ix_test_tname --创建一个非聚集索引 on test(tname)  --为test表的tname字段创建索引 with fillfactor = 30 --填充因子为30% go select * f

sql入门教程:create index创建索引

create index创建索引, 我们先来看看语法吧. CREATE INDEX index_name ON table_name (column_name) 创建唯一索引 SQL语法指数创建一个独特的指数上就座.重复值是不允许使用:   CREATE UNIQUE INDEX index_name ON table_name (column_name)   我们来对person的man表创建sex 索引例子吧.   CREATE INDEX PIndex ON Persons (LastNa

【数据库】mysql数据库索引

文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车.对于 没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢.还是以 WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表

数据索引笔记

1.什么是索引? 定义:索引是对数据库表中一列或多列的值进行排序的一种结构 目的:加快对表中记录的查找或排序 2.索引的类型? 1.唯一索引:唯一索引是不允许其中任何两行具有相同索引值的索引.   create unique clustered index myclumn_cindex on mytable(mycolumn) 2.非唯一索引:非唯一索引是相对唯一索引,允许其中任何两行具有相同索引值的索引   create index myclumn_cindex on mytable(myco

MySQL联合索引用法示例_Mysql

本文实例讲述了MySQL联合索引.分享给大家供大家参考,具体如下: 员工表 userid 部门表 deptid 员工部门表 条件:一个员工可以对应多个部门 问题:怎么样设置数据库,让其不能重复添加 userid 和deptid? uuid userid deptid 111 212 311(这个就不能让其添加) DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dep

MySQL数据定义语句:CREATE(创建)命令、ALTER(修改)命令、DROP(删除)

数据定义语言(DDL):包括CREATE(创建)命令.ALTER(修改)命令.DROP(删除)命令等. 注:MySQL version: 5.6.27 1.创建数据库和数据表: 数据库如果存在,则删除:(删除重要数据备份) mysql> DROP DATABASE IF EXISTS weloveshare; Query OK, 0 rows affected, 1 warning (0.00 sec) 删除或不存在weloveshare,则创建/*我们爱分享数据库*/ mysql> CREA

使用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的管

MySQL内核月报 2014.12-MySQL· 性能优化·Bulk Load for CREATE INDEX

背景 MySQL5.6以后的版本提供了多种优化手段用于create index,比如online方式,Bulk Load方式. Online提供了非阻塞写入的方式创建索引,为运维提供了很大的便利. Bulk Load提升了索引创建的效率,减少了阻塞的时间. 这篇介绍下MySQL 5.7.5 Bulk Load的细节,并从查找,排序,redo,undo,page split等维度比较一下传统方式和Bulk Load方式. 传统方式 MySQL 5.7.5版本之前,create index使用的是和