精华内容
下载资源
问答
  • mysql 创建索引语句
    千次阅读
    2020-11-19 19:00:03

    一、创建索引

    1.PRIMARY  KEY(主键索引)
            mysql > ALTER  TABLE  `table_name`  ADD  PRIMARY  KEY (  `column`  ) 
    2.UNIQUE(唯一索引)
            mysql > ALTER  TABLE  `table_name`  ADD  UNIQUE (`column` ) 
    3.INDEX(普通索引)
            mysql > ALTER  TABLE  `table_name`  ADD  INDEX index_name (  `column`  )
    4.FULLTEXT(全文索引)
            mysql > ALTER  TABLE  `table_name`  ADD  FULLTEXT ( `column` )
    5.多列索引(组合索引)
            mysql > ALTER  TABLE  `table_name`  ADD  INDEX index_name (  `column1`,  `column2`,  `column3`  )

     CREATE TABLE table_name  ( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOTNULL, age INT NOT NULL );

    二、删除索引

      删除索引的语法:  DROP INDEX  [ indexName ]  ON mytable;

     

    后面继续更新!

    Navicat建立索引

    mysql 添加索引语句

    更多相关内容
  • MySQL 创建索引(Create Index)的方法和语法结构及例子
  • MYSQL创建索引

    千次阅读 2021-04-29 22:52:48
    创建索引 alter table 数据库add index 索引名称(数据库字段名称) 创建主键索引 PRIMARY KEY(主键索引) ALTER TABLE table_name ADD PRIMARY KEY ( column ) 创建唯一索引 UNIQUE(唯一索引) ALTER TABLE table_...

    查看索引

    • show index from 数据库表名

    创建索引

    • alter table 数据库add index 索引名称(数据库字段名称)
    创建主键索引

    PRIMARY KEY(主键索引)
    ALTER TABLE table_name ADD PRIMARY KEY ( column )

    创建唯一索引

    UNIQUE(唯一索引)
    ALTER TABLE table_name ADD UNIQUE (column)

    创建普通索引

    INDEX(普通索引)
    mysql>ALTER TABLE table_name ADD INDEX index_name ( column )

    创建全文索引

    FULLTEXT(全文索引)
    ALTER TABLE table_name ADD FULLTEXT ( `col

    多列索引

    ALTER TABLE table_name ADD INDEX index_name ( column1, column2, column3 )
    1.普通索引。
    这是最基本的索引,它没有任何限制。它有以下几种创建方式:
    (1)创建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB 和 TEXT 类型,必须指定length,下同。
    (2)修改表结构:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
    (3)创建表的时候直接指定:CREATE TABLE tableName ( […], INDEX [indexName] (tableColumns(length)) ;

    2.唯一索引。
    它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
    (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))

    查看索引
    show index from tableName;

    展开全文
  • MYSQL创建索引全过程

    2014-03-28 11:46:37
    代码复制粘贴 改下里面的参数 就可以用 而且参数 也有说明 简单易懂
  • mysql创建索引三种方式

    万次阅读 多人点赞 2020-12-21 14:56:53
    1. 新建表中添加索引 ① 普通索引 create table t_dept( no int not null primary key, name varchar(20) null, sex varchar(2) null, info varchar(20) null, index index_no(no) ) ② 唯一索引 create ...

    1. 新建表中添加索引

    ① 普通索引
    create table t_dept(
        no int not null primary key,
        name varchar(20) null,
        sex varchar(2) null,
        info varchar(20) null,
        index index_no(no)
      )
    
    ② 唯一索引
    create table t_dept(
           no int not null primary key,
           name varchar(20) null,
           sex varchar(2) null,
           info varchar(20) null,
           unique index index_no(no)
         )
    
    ③ 全文索引
    create table t_dept(
           no int not null primary key,
           name varchar(20) null,
           sex varchar(2) null,
           info varchar(20) null,
           fulltext index index_no(no)
    
    ④ 多列索引
    create table t_dept(
           no int not null primary key,
           name varchar(20) null,
           sex varchar(2) null,
           info varchar(20) null,
           key index_no_name(no,name)
         )
    

    2. 在已建表中添加索引

    ① 普通索引
    create index index_name
                 on t_dept(name);
    
    ② 唯一索引
    create unique index index_name
                  on t_dept(name);
    
    ③ 全文索引
    create fulltext index index_name
                  on t_dept(name);
    
    ④ 多列索引
    create index index_name_no
                   on t_dept(name,no)
    

    3. 以修改表的方式添加索引

    ① 普通索引
    alter table t_dept
              add index index_name(name);
    
    ② 唯一索引
    alter table t_dept
                add unique index index_name(name);
    
    ③ 全文索引
    alter table t_dept
               add fulltext index_name(name);
    
    ④ 多列索引
    alter table t_dept
                  add index index_name_no(name,no);
    

    可参考:
    https://www.cnblogs.com/shihaiming/p/8529502.html

    展开全文
  • Mysql创建索引注意事项

    千次阅读 2020-03-08 08:40:39
    介绍了mysql索引相关的基础知识及索引自身搜索的规则和锁机制,并列了一些创建索引的一些优化策略或小tips...


    索引的基础:

    1. 索引就相当于一本书的目录,目的是快速定位数据
    2. 索引真正的价值是使用了索引的树搜索功能,而不是全表或全索引扫描,有效减少了扫描行数
    3. mysql是索引组织表,即数据本身是存储在主键索引的叶子节点的,如果表没有定义主键,系统也会创建一个隐藏的默认主键
    4. 索引的存储结构都是B+树,等值查询的时间复杂度都是log(N),B+树是有序存储,叶子节点之间也有指针
    5. 写入慢查询的标准是Sql执行时间跟long_query_time比较,如果执行时间超过long_query_time就会认为是一个慢查询,然后写入慢查询日志,这个时间默认是10s,一般线上业务会设置为1s,甚至更短
    6. 多使用explain来分析自己的Sql,其中rows字段的内容是预计扫描行数,不是一个精确或准确的值,这个值是mysql通过采样统计得到的
    7. 要关注扫描行数而不是是否使用索引,如果使用了索引还是进行了全表扫描或全索引扫描,那索引的价值也没有发挥出来
    8. 主键索引默认是AUTO_INCREMENT,其是从auto_increment_offset开始,步长为auto_increment_increment,默认两个值都是1
    9. 主键索引值并非一定按照步长连续增加,可能由于写入失败、写入回滚及使用insert … select等原因导致不连续,其中insert…select在申请自增值时会预留多个,用不完浪费掉的就是空隙
    10. 自增值到达数值类型的最大值之后会保持不变,因此再次写入会引发主键冲突
    11. 优化器在选择索引时候会基于扫描行数、是否使用临时表及是否排序等规则综合判断后,来决定是否使用索引以及使用哪个索引。
    12. 事务有4种隔离机制,从宽到严分别是读未提交(read uncommitted)、读提交(read committed)、可重复读(repeatable read)、串行化(serializable),最常用是读提交和可重复读,可通过变量’transaction_isolation’查看或修改当前隔离级别
    13. 默认有两种日志redo log和binlog,redo log是innodb引擎的日志,缓存了需要磁盘io的数据,可以减少磁盘操作,也方便实现故障恢复,binlog是Server层的日志,可以给所有引擎共用的逻辑日志,两种日志通过两阶段提交策略实现记录和同步。

    索引的规则:

    1. 覆盖索引:普通索引的叶子节点存储的是主键值,如果要查询的内容不止是主键值,需要回表操作,即得到主键值之后还需要到主键索引进行查找得到记录值
    2. 最左前缀原则:利用最左前缀原则为最常用查询创建索引,来减少索引的个数,从而减少mysql开销
    3. 索引下推:mysql5.6之后引入了索引下推优化,相当于对联合索引做了查询优化,减少了回表操作,即对索引种包含的字段先做判断,直接过滤掉不满足条件的记录。
    4. 普通索引在命中记录后,会查找下一个,直到找到不满足条件的记录,而唯一索引在命中后直接返回
    5. 普通索引的更新会使用change buffer缓存结果,而不是每次更改都写入磁盘,因此对于时效不强的数据尽可能使用普通索引而非唯一索引

    索引的优化策略:

    1. 对于较长字符串的列的查询,可以考虑使用mysql5.7引入的虚拟列来创建索引
    2. 对于双M主备结构,auto_increment_increment可以都设置为2,一个写奇数一个写偶数,防止两个库的主键冲突
    3. 写入较多的情况下,主键数据类型可以设置为big int,有8个字节,上限可以到达264-1
    4. 对于比较大的表做查询,可以考虑使用临时表,然后给临时表创建索引
    5. 对于字符串字段可以创建前缀索引来节省空间,前缀长度可以使用count(distinct)来判断,尽可能高区分度
    6. 对于区分度不打的字符串,可以考虑使用逆序存储或者hash值索引,这种方法仅适用等值查找,范围扫描会导致全索引扫描
    7. 有时mysql的优化器会选错索引,可以使用force index来强制指定索引,也可以通过修改语句来引导优化器,当然也可以直接增加或删除索引来避免,也可以使用analyze table [表名]重新统计索引信息后再执行
    8. 在使用join时要使用被驱动表的索引(使用了NLJ算法),尽可能让小表(满足条件的数据量相对较小的表)做驱动表,因为被驱动表的索引查找可以最大限度减少查询次数
    9. explain看到join语句的Extra中有Block Nested Loop(BNL)时表示被驱动表做了全表扫描,要避免这种写法,如果无法避免,则join_buffer_size可以设大一点让驱动表的数据可以加载多一点,从而减少被驱动表全表扫描的次数(因为join_buffer一次放不下驱动表数据时,会分多次装入后跟被驱动表的全表数据做对比)

    索引的锁机制

    1. 默认加锁的基本单位是next-key锁,next-key锁本身是前开后闭的
    2. 查找过程中访问到的对象才会加锁,访问到就会加锁
    3. 索引上的等值查询,给唯一索引加锁时,next-key会退化为行锁(innodb)
    4. 索引上的等值查询,向右遍历且最后一个值不满足等值条件时,next-key会退化为区间锁(前开后开)
    5. 索引默认向后遍历,如果有order by … desc字段要求逆序排列,则会从后向前遍历

    转自:https://www.zhenxiangsimple.com/2020/03/07/tech/mysql-index/

    展开全文
  • 本文将介绍mysql 如何创建索引,需要的朋友可以参考下
  • 1、在什么字段上创建索引在经常出现于where条件中,以及orderby子句中的字段上创建索引,根据业务,可创建组合索引。2、mysql 索引设计需要注意的点(1)业务上具有唯一特性的字段,即使是多个字段的组合,也必须创建...
  • MySql创建索引时百支持ASC或DESC排序。 下面举例 创建表时同时度创建索知引降序排序(sname 字段上普通道索引降序) create table tbl1 ( id int unique, sname varchar(50), index tbl1_index_sname(sname desc) ); ...
  • MySQL创建索引导致锁及表锁阻塞查询

    千次阅读 2019-08-28 11:17:45
    一:场景 -- 原有表结构' CREATE TABLE `leyangjun_user_test` ( ... 3:如果有慢查询 -> 只有慢查询结束了之后,才能创建索引和其他的操作   注意:DDL操作尽量在业务低峰时候操作,以免影响正常业务
  • mysql 创建索引时1071错误

    千次阅读 2019-04-03 09:32:07
    再给已有表添加唯一索引时一直添加不上,一直报错1071,通过查阅资料才知道是因为字段长度过大问题 可参考 https://blog.csdn.net/z404739140/article/details/83384830 https://blog.csdn...
  • MySql 创建索引原则

    千次阅读 2015-12-27 15:41:12
    为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。   1.选择唯一性索引   唯一性索引的值是唯一的,可以更快速的通过该索...
  • MySQL创建索引(CREATE INDEX)

    千次阅读 2021-01-19 00:13:10
    基本语法MySQL 提供了三种创建索引的方法:1) 使用 CREATE INDEX 语句可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语句不能创建主键。语法格式:CREATE ON ( [] [ ASC | DESC])语法...
  • 在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。 1.ALTER TABLE ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 ALTER TABLE table_name ADD INDEX ...
  • 1、创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引。以下命令语句分别展示了如何创建主键索引(PRIMARY KEY),联合索引(UNIQUE)和普通索引(INDEX)的方法。 ...
  • MySQL中如何创建索引

    2022-05-02 14:46:11
    添加索引: 1.添加主键: alter table tableName add primary key(columnName); 2.添加唯一索引 alter table tableName add unique indexName(columnName); 3.添加普通索引 alter table tableName add index ...
  • SQL CREATE INDEX (mysql 创建索引)语句

    千次阅读 2020-09-11 18:36:33
    SQL CREATE INDEX (mysql 创建索引)语句 ** 1.创建普通索引 SQL CREATE INDEX 语法 在表上创建一个简单的索引。允许使用重复的值: CREATE INDEX index_name ON table_name (column_name) 注释:“column_name” ...
  • MySQL创建索引 由于数据量的不断增大,在使用MySql查询时速度愈来愈慢,这时候有必要创建合适的索引来优化提升查询的速度。
  • mysql创建索引很慢,怎么解决

    千次阅读 2021-01-19 20:01:14
    (我没有设置 innodb_flush_log_at_trx_commit 不知道如果设置了 会是什么结果) 我之前是 先导入文件在创建索引。。。四分钟左右搞定!!!但是这样。。创建索引的时候很慢。。。 对我有用[0]丢个板砖[0]引用举报管理...
  • MySQL——索引创建与删除

    千次阅读 2022-02-24 09:58:56
    文章目录MySQL——索引的创建与删除1、创建索引的三种方式1.1、建表时创建索引1.2、修改表时创建索引1.3、使用 CREATE INDEX 语句创建索引2、删除索引 MySQL——索引的创建与删除 1、创建索引的三种方式 1.1、建表时...
  • 同事再给一个表(400w+)添加索引的时候,索引添加失败,错误认为添加的索引没有起作用,又删除了,结果可能把另外一个索引删除了,导致mysql锁表,进程加多,线上访问导致缓慢。然后不断去kill进程id,但是不起作用,...
  • mysql创建索引方式

    千次阅读 2019-06-29 19:11:48
    在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。 1.ALTER TABLE ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 ALTER TABLE table_name ADD ...
  • MySQL 创建索引和索引效率验证

    千次阅读 多人点赞 2019-10-27 17:41:44
    MySQL 创建索引和索引效率验证 对于一张存储数据的表来说,通常来说数据量会很大。 项目中总会有一些表数据量非常大,并且在使用过程中,需要频繁地到这些表中查询数据。 数据量大的时候,查询速度会明显变慢,这...
  • MySQL创建索引如果不存在

    千次阅读 2021-01-28 05:47:21
    要记住两件事:无论如何创建索引您可以生成索引,以便创建索引而不检查索引是否提前存在.例如,您可以运行以下命令:ALTER TABLE table_name ADD INDEX (column_to_index);ALTER TABLE table_name ADD INDEX (column_...
  • MySQL的索引类型及创建索引

    万次阅读 2019-03-05 14:04:27
    MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二、语法 CREATE TABLE table_name[col_name data type] [unique|fulltext][index|key][index_name](col_name...
  • MySQL创建索引的三种方式

    千次阅读 2021-02-05 09:52:30
    MySQL各版本,对于add Index的处理方式是不同的,主要有三种:(1)Copy Table方式这是InnoDB最早支持的创建索引的方式。顾名思义,创建索引是通过临时表拷贝的方式实现的。新建一个带有新索引的临时表,将原表数据...
  • 直接上结论:mql查询语句的where条件字段和select查询字段需要在同一个索引...我们项目使用mysql作为数据库,在单表达到百万级别以后,经常发现大表查询速度难以忍受,达到半分钟到5分钟左右。尝试在大表添加了索引...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,756
精华内容 123,102
关键字:

mysql创建索引

mysql 订阅
友情链接: Control_Platform.rar