美文网首页
1:mysql索引创建与优化

1:mysql索引创建与优化

作者: 莫负青春正年少 | 来源:发表于2019-01-22 14:03 被阅读0次

一:索引类型(常用)

1.主键索引 primary key
    一种特殊的唯一索引,每张表只有一个主键索引,不为空且唯一。
2.唯一索引    unique
    索引列的值必须唯一,但是允许空值。如果是组合列,该组合列的值也必须唯一。
3.普通索引    index
    是最基本的索引,它没有任何限制
4.组合索引
    指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀原则
5.全文索引   fulltext
    mysql5.6以前只有 myISAM 的char varchar text 类型支持全文索引,5.6后innoDB也支持。在数据量大的时候,先写入数据在添加全文索引比在写入数据的同时创建索引的速度快很多。
    主要用来查找文本中关键字,而不是直接与索引中的值比较。因此用法与其他索引不大相同,不用于where条件来参数匹配,而是配合match agains操作使用。具体用法下方详见:

二:创建索引命令

在建表的时候创建
CREATE TABLE `table_name` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `title` CHAR(255) NOT NULL DEFAULT '',
    `code` CHAR(5) NOT NULL DEFAULT '',
    `name` VARCHAR(255) NOT NULL DEFAULT '',
    `passwd` VARCHAR(255) NOT NULL DEFAULT '',
    `description` TEXT NOT NULL DEFAULT '',
    PRIMARY KEY (`id`),
    UNIQUE INDEX `code` (`code`),
    INDEX `title` (`title`),
    INDEX `name_pass` (`name`, `passwd`)
    FULLTEXT (`description`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
直接创建
CREATE INDEX name ON `table_name` (`name`)
修改
ALTER TABLE `talbe_name` ADD [INDEX|FULLTEXT|UNIQUE|]  {INDEX_NAME     ({FIELD1[,FIELD2]});
ALTER TABLE `talbe_name` ADD INDEX name(`name`) ;

三:删除索引命令

 ALTER TABLE `table_name` DROP INDEX `title`;

四:索引优缺点及注意事项

优点:
1.大大提高了查询速度
2.通过唯一索引可以确保数据的唯一性
缺点
1.创建索引与维护索引需要花费时间与空间
2.写入数据速度变慢

五:索引查询优化

1.最左前缀匹配
建立联合索引 (a,b,c,d) 时
where a=xx  -- 使用索引
where b=yy AND a=xx   -- 使用索引
where  b= yy     -- 未使用索引

mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,
比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,
如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
2. 条件中使用了 OR
WHERE a=1 OR b=2    
如果a建立了索引 b未建立索引,该sql是全表扫描-未使用索引
3.like 模糊查询
ike 查询是以%开头    -不走索引
like 查询 %不在起始位置 ,且mysql计算,走索引速度高于全表扫描,才走索引
4.连接查询
连接查询是连接的字段建立索引

相关文章

  • 1:mysql索引创建与优化

    一:索引类型(常用) 二:创建索引命令 在建表的时候创建 直接创建 修改 三:删除索引命令 四:索引优缺点及注意事...

  • mysql 查询优化

    参考文章:mysql 如何优化left joinmysql 创建索引和删除索引mysql 查看索引 查看字符编码

  • mysql 索引优化

    索引的存储分类 索引的创建与删除 索引查看 mysql常用语句优化技巧定期优化表 常用优化 2.应尽量避免在whe...

  • MySQL相关文章索引(2)

    1.MySQL性能优化 对MySQL语句的性能分析与优化 Mysql 监控 Innodb 阻塞状况 MySQL索引...

  • DAY6:MySQL冗余和重复索引

    一、定义 MySQL允许在相同的列上创建多个索引,MySQL需要单独维护重复的索引,并且优化器在优化查询的时候也需...

  • PHP题目分享与答案(2)

    2:索引分为哪些?如何创建索引?索引如何优化?A,B,C联合索引如何才能命中索引? MySQL索引分为主键索引,唯...

  • 9月17-MySQL性能优化

    MySQL性能优化策略 1、MySQL内核架构 2、索引原理与查询优化 加速MySQL高效查询数据的数据结构 二分...

  • MySQL(4)应用优化

    MySQL应用优化 4.1-MySQL索引优化与设计 索引的作用 快速定位要查找的数据 数据库索引查找 全表扫描 ...

  • MySQL索引知多少

    mysql索引 总结关于mysql的索引,查询优化,SQL技巧等 1 索引类型 B-Tree索引 Hash索引 ...

  • MySQL--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

网友评论

      本文标题:1:mysql索引创建与优化

      本文链接:https://www.haomeiwen.com/subject/rflljqtx.html