MySQL 索引创建

一、查询

1、子查询

   ANY(SOME) ,ALL ,IN ,EXISTS

  1.1 ANY 接在比较操作符后面,表示若与子查询返回的值比较为true,返回true。

  1.2 ALL 接在比较操作符后面,需要同时满足子查询返回的结果。

  1.3   EXISTS  子查询至少返回一行时,运行结果为true。

      EXISTS可以在 WHERE后使用。

2、正则表达式查询

  SELECT * FROM table_name WHERE table_col REGEXP '表达式'

二、索引

  可以加速表之间的连接,减少分组和排序的时间。

  有大量索引时,索引文件可能比数据文件更快的达到最大文件尺寸,数据进行增删改时,索引也要动态维护。

1、分类

  1.1 普通索引:基本索引类型,允许重复值和空值

    唯一索引:允许有空值。 主键索引是特殊的唯一索引,不允许空值

  1.2 单列索引和组合索引 :组合索引遵循最左前缀

  1.3 全文索引:支持CHAR, VARCHAR, TEXT类型,只有MyISAM支持。

  1.4 空间索引

2、创建索引

  1.1 建表时创建

  a 普通索引:CREATE TABLE table_name(...   ,INDEX(table_col));

  b 唯一索引:CREATE TABLE table_name(...   ,UNIQUE INDEX 索引名(table_col));

  c 组合索引:CREATE TABLE table_name(...   ,INDEX 索引名(table_col, table_col2,..));

  d 全文索引:CREATE TABLE table_name(...   ,FULLTEXT INDEX 索引名(table_col)) ENGINE=MyISAM;

  1.2 修改表结构(ALTER TABLE)

  ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL]  [INDEX|KEY] [index_name] (table_col[length],...) [ASC|DESC]

  例:ALTER TABLE user ADD UNIQUE INDEX username(user_name);  

  1.3 单独创建(CTEATE INDEX)

  CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON table_name (table_col[length],...) [ASC|DESC]

  例: CRTEAT UNIQUE INDEX username ON user (user_name);

3、查看索引

  1.1 查看索引定义:SHOW INDEX FROM table_name;

  1.2 查看索引使用:EXPLAIN关键字查看语句执行情况,执行结果中possible_keys表示可用的索引,key表示实际使用的索引,key_len表示索引的长度,rows表示预计从数据库读出的数据行的个数。

4、删除索引

  1.1 修改表结构 ALTER TABLE table_name DROP INDEX index_name;

  1.2 单独删除 DROP INDEX index_name ON table_name;

  

转载于:https://www.cnblogs.com/Shieryue/p/6669818.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值