Ⅰ Mysql中怎样创建聚集索引和非聚集索引,求创建这两种索引的SQL语句。谢谢
InnoDB按照主键进行聚集,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。
所以,对于 聚集索引 来说,你创建主键的时候,自动就创建了主键的聚集索引。
而普通索引(非聚集索引)的语法,大多数数据库都是通用的:
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}
[java] view plain
-- 创建无索引的表格
create table testNoPK (
id int not null,
name varchar(10)
);
-- 创建普通索引
create index IDX_testNoPK_Name on testNoPK (name);
Ⅱ mysql数据库怎么创建索引
普通索引 添加INDEX
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
下面演示下给user表的name字段添加一个索引
mysql数据库如何创建索引
mysql数据库如何创建索引
主键索引 添加PRIMARY KEY
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
mysql数据库如何创建索引
mysql数据库如何创建索引
唯一索引 添加UNIQUE
ALTER TABLE `table_name` ADD UNIQUE ( `column` )
mysql数据库如何创建索引
全文索引 添加FULLTEXT
ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
mysql数据库如何创建索引
如何添加多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
mysql数据库如何创建索引
Ⅲ 怎么MySql添加全文索引
使用索引是数据库性能优化的必备技能之一。在MySQL数据库中,有四种索引:聚集索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FULLTEXT INDEX)。
全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用“分词技术“等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。在这里,我们就不追根究底其底层实现原理了,现在我们来看看在MySQL中如何创建并使用全文索引。
在MySQL中,创建全文索引相对比较简单。例如,我们有一个文章表(article),其中有主键ID(id)、文章标题(title)、文章内容(content)三个字段。现在我们希望能够在title和content两个列上创建全文索引,article表及全文索引的创建SQL语句如下:
--创建article表
CREATE TABLE article (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
content TEXT,
FULLTEXT (title, content) --在title和content列上创建全文索引
);
上面就是在创建表的同时建立全文索引的SQL示例。此外,如果我们想要给已经存在的表的指定字段创建全文索引,同样以article表为例,我们可以使用如下SQL语句进行创建:
--给现有的article表的title和content字段创建全文索引
--索引名称为fulltext_article
ALTER TABLE article
ADD FULLTEXT INDEX fulltext_article (title, content)
在MySQL中创建全文索引之后,现在就该了解如何使用了。众所周知,在数据库中进行模糊查询是使用LIKE关键字进行查询,例如:
SELECT * FROM article WHERE content LIKE '%查询字符串%'
那么,我们使用全文索引也是这样用的吗?当然不是,我们必须使用特有的语法才能使用全文索引进行查询。例如,我们想要在article表的title和content列中全文检索指定的查询字符串,可以如下编写SQL语句:
SELECT * FROM article WHERE MATCH(title, content) AGAINST('查询字符串')
强烈注意:MySQL自带的全文索引只能用于数据库引擎为MyISAM的数据表,如果是其他数据引擎,则全文索引不会生效。此外,MySQL自带的全文索引只能对英文进行全文检索,目前无法对中文进行全文检索。如果需要对包含中文在内的文本数据进行全文检索,我们需要采用Sphinx(斯芬克斯)/Coreseek技术来处理中文。本站将会在后续文章中对Sphinx以及Coreseek进行介绍。
备注1:目前,使用MySQL自带的全文索引时,如果查询字符串的长度过短将无法得到期望的搜索结果。MySQL全文索引所能找到的词的默认最小长度为4个字符。另外,如果查询的字符串包含停止词,那么该停止词将会被忽略。
备注2:如果可能,请尽量先创建表并插入所有数据后再创建全文索引,而不要在创建表时就直接创建全文索引,因为前者比后者的全文索引效率要高。
Ⅳ 创建唯一索引的sql语句是什么
创建唯一索引的sql语句如下:
CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME)
其中UNIQUE和CLUSTERED为可选项,分别是建立唯一索引和聚簇索引。
具体解释为:
UNIQUE:表示此索引的每一个索引值只对应唯一的数据。
CLUSTERED:表示要建立的索引时聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织。
Ⅳ mysql如何建立索引
我们可以通过查看索引的属性来判断创建索引的方法。
查看索引的语法格式如下:
SHOW INDEX FROM <表名> [ FROM <数据库名>]
语法说明如下:
<表名>:指定需要查看索引的数据表名。
<数据库名>:指定需要查看索引的数据表所在的数据库,可省略。比如,SHOW INDEX FROM student FROM test; 语句表示查看 test 数据库中 student 数据表的索引。
示例
使用 SHOW INDEX 语句查看《MySQL创建索引》一节中 tb_stu_info2 数据表的索引信息,SQL 语句和运行结果如下所示。
mysql> SHOW INDEX FROM tb_stu_info2\G
1. row
Table: tb_stu_info2
Non_unique: 0
Key_name: height
Seq_in_index: 1
Column_name: height
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.03 sec)
其中各主要参数说明如下:
参数 说明
Table 表示创建索引的数据表名,这里是 tb_stu_info2 数据表。
Non_unique 表示该索引是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。
Key_name 表示索引的名称。
Seq_in_index 表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。
Column_name 表示定义索引的列字段。
Collation 表示列以何种顺序存储在索引中。在 MySQL 中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。
Cardinality 索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL 使用该索引的机会就越大。
Sub_part 表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。
Packed 指示关键字如何被压缩。若没有被压缩,值为 NULL。
Null 用于显示索引列中是否包含 NULL。若列含有 NULL,该列的值为 YES。若没有,则该列的值为 NO。
Index_type 显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)。
Comment 显示评注。
Ⅵ 如何创建mysql索引以及索引的优缺点
mysql教程:索引的使用以及索引的优缺点
1. 索引(index)是帮助MySQL高效获取数据的数据结构。
它对于高性能非常关键,但人们通常会忘记或误解它。
索引在数据越大的时候越重要。规模小、负载轻的数据库即使没有索引,也能有好的性能, 但是当数据增加的时候,性能就会下降很快。
Tip:蠕虫复制,可以快速复制大量的数据
例:insert into emp select * from emp;
2. MySQL中常见的索引
◆普通索引 ◆唯一索引 ◆主键索引 ◆组合索引 ◆全文索引◆外键 (只有innodb存储引擎才支持)
2.1普通索引:
这是最基本的索引,它没有任何限制。有以下几种创建方式:
有以下几种创建方式:
◆创建索引
CREATE INDEX indexName ON tablename(username(length));
◆修改表结构
ALTER tablename ADD INDEX indexName (username(length))
Tip:length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length ,下同
◆创建表的时候直接指定
CREATE TABLE mytableuuu( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX indexName (username(length)) );
CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL);
create index index1 on mytable(id); //创建普通索引
◆删掉索引:
drop index index1 on mytable;
有一个概念,
行定义:在声明字段(列)的时候定义的,比如primary key
表定义:在所有字段(列)声明完之后定义的,比如primary key,index
CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL,index index1(username));
3.0唯一索引(unique)
索引列的值必须唯一,但允许有空值。
1)创建索引:Create UNIQUE INDEX indexName ON tableName(tableColumns(length))
2)修改表结构:Alter tableName ADD UNIQUE [indexName] ON (tableColumns(length)
3)创建表的时候直接指定:Create TABLE tableName ( [...], UNIQUE [indexName](tableColumns(length));
4.0主键索引(primary key)