精华内容
下载资源
问答
  • SQL CREATE INDEX (mysql 创建索引语句 ** 1.创建普通索引 SQL CREATE INDEX 语法 在表上创建一个简单索引。允许使用重复值: CREATE INDEX index_name ON table_name (column_name) 注释:“column_name” ...

    **

    SQL CREATE INDEX (mysql 创建索引)语句

    **
    1.创建普通索引
    SQL CREATE INDEX 语法
    在表上创建一个简单的索引。允许使用重复的值:
    CREATE INDEX index_name
    ON table_name (column_name)
    注释:“column_name” 规定需要索引的列。

    2.创建唯一索引
    SQL CREATE UNIQUE INDEX 语法
    在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
    CREATE UNIQUE INDEX index_name
    ON table_name (column_name)

    3.实例
    CREATE INDEX 实例
    本例会创建一个简单的索引,名为 “PersonIndex”,在 Person 表的 LastName 列:
    CREATE INDEX PersonIndex
    ON Person (LastName)

    4.索引添加约束
    如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:
    CREATE INDEX PersonIndex
    ON Person (LastName DESC)

    5.组合索引
    假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
    CREATE INDEX PersonIndex
    ON Person (LastName, FirstName)

    展开全文
  • mysql索引学习----2----创建索引、修改索引、删除索引的命令语句查看表中已经存在index:show index from table_name;创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER ...

    mysql索引学习----2----创建索引、修改索引、删除索引的命令语句

    查看表中已经存在index:show index from table_name;

    创建和删除索引

    索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。删除索引可以利用ALTER TABLE或DROP INDEX 语句来实现。

    (1)使用ALTER TABLE语句创建索引。

    语法如下:

    alter table table_name add index index_name (column_list) ;

    alter table table_name add unique (column_list) ;

    alter table table_name add primary key (column_list) ;

    其中包括普通索引、UNIQUE索引和PRIMARY KEY索引3种创建索引的格式,table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。

    创建索引的示例如下:

    mysql> use tpsc

    Database changed

    mysql> alter table tpsc add index shili (tpmc ) ;

    Query OK, 2 rows affected (0.08 sec)

    Records: 2 Duplicates: 0 Warnings: 0

    (2)使用CREATE INDEX语句对表增加索引。

    能够增加普通索引和UNIQUE索引两种。其格式如下:

    create index index_name on table_name (column_list) ;

    create unique index index_name on table_name (column_list) ;

    说明:table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY 索引。

    (3)删除索引。

    删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:

    drop index index_name on table_name ;

    alter table table_name drop index index_name ;

    alter table table_name drop primary key ;

    其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最

    展开全文
  • 查看表中已经存在 index:showindex from table_name;创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或...(1)使用ALTER TABLE语句创建索引。语法如下:alter table table_name ...

    查看表中已经存在 index:show index from table_name;

    创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。删除索引可以利用ALTER TABLE或DROP INDEX语句来实现。

    (1)使用ALTER TABLE语句创建索引。语法如下:

    alter table table_name add index index_name (column_list) ;

    alter table table_name add unique (column_list) ;

    alter table table_name add primary key (column_list) ;

    其中包括普通索引、UNIQUE索引和PRIMARY KEY索引3种创建索引的格式,table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。

    创建索引的示例如下:

    mysql> use tpsc

    Database changed

    mysql> alter table tpsc add index shili (tpmc ) ;

    Query OK, 2 rows affected (0.08 sec)

    Records: 2 Duplicates: 0 Warnings: 0

    (2)使用CREATE INDEX语句对表增加索引。能够增加普通索引和UNIQUE索引两种。其格式如下:

    create index index_name on table_name (column_list) ;

    create unique index index_name on table_name (column_list) ;

    说明:table_name、index_name和column_list具有与ALTER TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。

    (3)删除索引。删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:

    drop index index_name on table_name ;

    alter table table_name drop index index_name ;

    alter table table_name drop primary key ;

    其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。

    如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

    删除索引的操作,如下面的代码:

    mysql> drop index shili on tpsc ;

    Query OK, 2 rows affected (0.08 sec)

    Records: 2 Duplicates: 0 Warnings: 0

    该语句删除了前面创建的名称为“shili”的索引。

    展开全文
  • 一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理...多列索引:即一个索引包含多个列,但是此时列的顺序也十分重要,因为MySQL只能高效地使用索引的最左前缀...

    一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索引来实施完整性约束。

    单列索引和多列索引

    单列索引:即一个索引只包含单个列,一个表可以有多个单列索引。

    多列索引:即一个索引包含多个列,但是此时列的顺序也十分重要,因为MySQL只能高效地使用索引的最左前缀列(一般用在WHERE字句带AND操作会有用)。

    1)普通索引

    普通索引是MySQL最基本的索引类型,它没有任何限制。

    2)唯一索引

    它与前面的”普通索引”类似,不同的就是:索引列的值必须唯一,但允许为NULL。如果是联合唯一索引,则列值的组合必须唯一。

    这里要说明一点,唯一键约束和主键约束创建时都会默认隐式创建同名的唯一索引,以键名为索引名。唯一键约束索引列的值必须唯一,但允许为NULL。而主键约束索引不允许有空值,且在一张表中只允许有一个主键约束,但允许存在复合主键索引,也就是两个字符共同组成一个主键索引,两个字段组合必须唯一。一般是在建表的时候同时创建主键约束。

    唯一键约束和主键约束与唯一索引的区别是,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除。但你可以先创建唯一索引,后创建主键约束或唯一键约束。这样显式创建的唯一索引不受主键约束或唯一键约束失效的影响。

    3)全文索引

    FULLTEXT类型索引,可以在CHAR,VARCHAR或者TEXT类型的列上创建,之前仅仅是MYISAM存储引擎支持,从MySQL5.6版本开始支持InnoDB引擎的全文索引,语法层面上大多数兼容之前MyISAM的全文索引模式。全文索引是一种特殊类型的索引,它查找的是文本中的关键词,而不是直接比较索引中的值。全文搜索和其他几类索引的匹配方式完全不一样。它有许多需要注意的细节,如停用词、词干和复数、布尔搜索等。全文索引更类似于搜索引擎做的事情,而不是简单的WHERE条件匹配。

    4)空间索引

    MyISAM支持空间索引,主要用于地理空间数据类型,例如GEOMETRY。和B-Tree索引不同,这类索引无须前缀查询。空间索引会从素有维度来索引数据。查询时,可以有效地使用任意维度来组合查询。必须使用MySQL的GIS相关函数如MBRCONTAINS()等来维护数据。MySQL的GIS支持并不完善,所以大部分人都不会使用这个特性。开源关系数据库系统中对GIS的解决方案做得比较好的就是PostgreSQL的PostGIS。

    索引的创建

    第一种:普通索引

    直接创建索引

    1

    mysql> create index INDEX_NAME on TABLE_NAME(Column[length]) [using btree|hash];

    修改表结构添加索引

    1

    mysql> alter TABLE_NAME add index [INDEX_NAME] on (Column[length]) [using btree|hash];

    创建表时创建索引

    1

    mysql> create table TABLE_NAME( [...],INDEX [INDEX_NAME] (Column[length]) [using btree|hash];

    [length]可选,如果是CHAR或VARCHAR类型,length可以小于字段实际长度。如果是 BLOB 和 TEXT 类型,必须指定 length。

    [using btree|hash]可选,btree或hash都是用来排序算法,默认是btree。

    第二种:唯一索引

    直接创建索引

    1

    mysql> create unique index INDEX_NAME on TABLE_NAME(column(length));

    修改表结构添加索引

    1

    mysql> alter TABLE_NAME add unique index [INDEX_NAME] on (Column(length));

    创建表时创建索引

    1

    mysql> create table TABLE_NAME ( [...], UNIQUE [INDEX_NAME] (Column(length));

    创建唯一键约束

    1

    mysql> alter TABLE_NAME add unique key [INDEX_NAME] on (Column(length));

    创建主键约束

    1

    mysql> create table TABLE_NAME(id INT NOT NULL AUTO_INCREMENT, Name VARCHAR(16) NOT NULL,PRIMARY KEY(id));

    这里就体现出来了,我们使用唯一索引和唯一键约束都可以创建一条唯一索引。在创建唯一键约束时会自动创建一条唯一键索引。

    第三种:全文索引

    创建表时指定索引

    1

    mysql> create table TABLE_NAME([...],FULLTEXT INDEX INDEX_NAEM(info));

    第四种:联合索引

    直接创建索引(联合唯一索引)

    1

    mysql> create unique index INDEX_NAME on TABLE_NAME(FIELD1,FIELD2);

    修改表结构添加索引(联合唯一索引)

    1

    mysql> alter table TABLE_NAME add unique index INDEX_NAME(FIELD1,FIELD2);

    创建表时创建索引(普通联合索引)

    1

    mysql> create table t3 (id INT NOT NULL,NAME CHAR(30) NOT NULL,age INT NOT NULL,info VARCHAR (255),INDEX multiIdx (id, NAME, age (100));

    索引删除

    1

    mysql> drop index INDEX_NAME on TABLE_NAME;

    查看索引

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    mysql> show create table TABLE_NAME;

    mysql> show index from TABLE_NAME;

    Table: user(表名)

    Non_unique: 0(是否为唯一键)

    Key_name: PRIMARY(索引名字)

    Seq_in_index: 1(索引中的列顺序号从1开始)

    Column_name: account_id(列名)

    Collation: A(列怎样在索引中被排序。在MySQL中,这可以有值A(升序) 或NUL)

    Cardinality: 21941(索引中唯一值的数量。这可通过运行isamchk -a更改)

    Sub_part: NULL(如果列只是部分被索引,索引字符的数量。NULL,如果整个键被索引)

    Packed: NULL

    Null:

    Index_type: BTREE(索引类型)

    Comment:

    如何检测所创建的索引是否有效(或者说索引使用情况)

    1

    mysql> show status like 'Handler_read%';

    Handler_read_key越高越好。

    Handler_read_rnd_next越高越不好。

    索引性能测试

    1)分别在没有索引和有索引的情况下执行查询。

    2)分别在没有索引和有索引的情况下新增数据。

    创建没有索引的表

    1

    2

    3

    mysql> create database it;

    mysql> use it;

    mysql> create table indextest(id int,number int,password varchar(50));

    插入数据

    1

    $ for ((i=1;i<=500000;i++));do `mysql -uroot -predhat -e "insert into it.indextest values($i,floor($i+rand()*$i),md5($i));"`;done

    创建有索引的表

    1

    2

    3

    mysql> create table indextest01(id int,number int,password varchar(50));

    mysql> insert into indextest01 select * from indextest;

    mysql> create index iid on indextest01(id) using btree;

    查看表

    1

    2

    3

    4

    5

    mysql> show tables\G

    *************************** 1. row ***************************

    Tables_in_it: indextest

    *************************** 2. row ***************************

    Tables_in_it: indextest01

    刷新查询缓存,如果没有效果重启MySQL是最有效的

    1

    mysql> reset query cache;

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    mysql> select number,password from indextest where id>200000;

    300000 rows in set (6.31 sec)

    mysql> select number,password from indextest where id>200000;

    300000 rows in set (0.23 sec)

    mysql> select number,password from indextest01 where id>200000;

    300000 rows in set (0.35 sec)

    mysql> select number,password from indextest01 where id>200000;

    300000 rows in set (0.18 sec)

    执行查询计划

    1

    mysql> explain select number,password from indextest01 where id>200000\G;

    查询计划可以用于输出查询的详细信息,可以看出此条SQL语句有没有用到索引。

    另外一个没有索引的表在接收数据导入时比有索引的表要快很多。因为当一个表建立索引之后,导入数据时。每导入一行数据随之索引就需要变化,从而导致导入数据慢。

    本文出自https://www.ywnds.com/?p=7796

    展开全文
  • 在MySQL中索引也叫做键(key),索引的基本功能是存储引擎快速的查找数据。索引在性能优化时有非常关键的作用,尤其是在数据量较大时,索引能让数据的...1. 创建MySQL索引MySQL创建索引语法如下:CREATE [UNIQUE|FU...
  • Mysql索引创建原则在mysql中使用索引的原则有以下几点:1、 对于查询频率高的字段创建索引;2、 对排序、分组、联合查询频率高的字段创建索引;3、 索引的数目不宜太多原因:a、每创建一个索引都会占用相应的物理...
  • 原标题:mysql数据库索引类型 MySQL索引类型:1、普通索引最基本索引,它没有任何限制,用于加速查询。创建方法:a. 建表时候一起创建... 建表后,直接创建索引CREATE INDEX index_mytable_name ON myt...
  • 查看表中已经存在 index:showindex from table_name;创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或...(1)使用ALTER TABLE语句创建索引。语法如下:alter table table_name ...
  • mysql 创建索引语句

    千次阅读 2017-05-16 11:12:48
    CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME...UNIQUE:表示此索引的每一个索引值只对应唯一的数据。 CLUSTERED:表示要建立的索引时聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织。
  • 转为MySQL索引创建语句背景:因为在使用DataPipeline做数据同步(oracle到TiDB[语法与MySQL基本一致数据库])时候发现oracle数据库的索引是没有被一起同步过来,在查询数据时候会很慢,所以需要手动在TiDB中...
  • # 有这样一个表 Pmysql> create table P (id int primary key, name varchar(10) not null, sex varchar(1), age int, index tl(name,sex,age)) ...mysql> insert into P values(1,'张三','F',26),(2,'张三'...
  • 一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同索引是存储在数据库中一个物理结构,键纯粹是一个逻辑...多列索引:即一个索引包含多个列,但是此时列顺序也十分重要,因为MySQL只能高...
  • mysql创建索引、修改索引、删除索引的命令语句 查看表中已经存在 index: showindex from table_name; 创建和删除索引:索引的创建可以在 CREATE TABLE 语句中进行,也可以单独用 CREATE INDEX 或 ALTER TABLE 来给...
  • 创建索引是指在某个表的一列...本节将详细讲解这3种创建索引的方法。7.2.1 创建表的时候创建索引(1)创建表时可以直接创建索引,这种方式最简单、方便。其基本形式如下:CREATE TABLE 表名( 属性名 数据类型[完整性约...
  • 创建索引一:唯一索引alter table table_name add unique index_name(column_list);例如:alter table users_game_task add unique unique_userid_taskid(userid, taskid);二:主键索引:PRIMARY KEY(主键索引)ALTER...
  • Mysql创建各种索引的语句整理 代码 添加PRIMARY KEY(主键索引) 添加UNIQUE(唯一索引) 添加INDEX(普通索引) 添加FULLTEXT(全文索引) 添加多列索引 ) mysql>ALTER TABLE `...
  • 基本语法MySQL 提供了三种创建索引的方法:1) 使用 CREATE INDEX 语句可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。语法格式:CREATE ON ( [] [ ASC | DESC])语法...
  • 基本语法MySQL 提供了三种创建索引的方法:1) 使用 CREATE INDEX 语句可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键(主键在建表指定或alter table添加)。...
  • 本文主要和大家分享MySQL创建索引和删除索引的方法,希望能帮助到大家。一.添加索引(1)ALTER TABLE语句1.PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.UNIQUE(唯一索引...
  • mysql数据库索引的创建语句

    千次阅读 2017-07-29 10:54:07
    单列索引 CREATE INDEX 索引名 ON 表名(列名); 组合索引创建 create unique index 索引名 on 表名(列名1,列名2……)
  • mysql中使用索引的原则有以下几点:1、 对于查询频率高的字段创建索引;2、 对排序、分组、联合查询频率高的字段创建索引;3、 索引的数目不宜太多原因:a、每创建一个索引都会占用相应的物理控件;b、过多的索引...
  • mysql中使用索引的原则有以下几点:1、 对于查询频率高的字段创建索引;2、 对排序、分组、联合查询频率高的字段创建索引;3、 索引的数目不宜太多原因:a、每创建一个索引都会占用相应的物理控件;b、过多的索引...
  • mysql索引,mysql创建索引,mysql删除索引1.在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。今天就简单地给大家演示一下mysql中索引的创建,查询以及删除。2.首先随便建立...
  • create unique index customer_info_index1 on customer_info(number);--创建唯一索引create index customer_info_index2 on customer_info(name);--创建索引drop index user_... --删除索引mysql查询表结构的语句sh
  • 本文主要和大家分享MySQL创建索引和删除索引的方法,希望能帮助到大家。一.添加索引(1)ALTER TABLE语句1.PRIMARY KEY(主键索引)mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )2.UNIQUE(唯一索引)...
  • 本文实例讲述了MySQL查看、创建和删除索引的方法。分享给大家供大家参考。具体如下:1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,104
精华内容 1,241
关键字:

mysql创建索引的语句

mysql 订阅