最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL管理与优化(7)_MySQL

来源:动视网 责编:小采 时间:2020-11-09 19:28:03
文档

MySQL管理与优化(7)_MySQL

MySQL管理与优化(7)_MySQL: 索引的设计与使用 所有MySQL列类型都可以被索引,使用索引是提高SELECT性能的最佳途径。 索引是针对整列的,不支持局部索引。 范例: -- 表mysql> select * from city;+----+----------+| id | city |+----+------
推荐度:
导读MySQL管理与优化(7)_MySQL: 索引的设计与使用 所有MySQL列类型都可以被索引,使用索引是提高SELECT性能的最佳途径。 索引是针对整列的,不支持局部索引。 范例: -- 表mysql> select * from city;+----+----------+| id | city |+----+------


索引的设计与使用

  • 所有MySQL列类型都可以被索引,使用索引是提高SELECT性能的最佳途径。
  • 索引是针对整列的,不支持局部索引。
  • 范例:
  • -- 表mysql> select * from city;+----+----------+| id | city |+----+----------+| 1 | ChengDu || 2 | NeiJiang || 3 | HangZhou |+----+----------+-- 创建10个字节的前缀索引mysql> create index cityname on city (city(10));Query OK, 0 rows affected (0.21 sec)Records: 0 Duplicates: 0 Warnings: 0-- 查询mysql> explain select * from city where city = 'ChengDu'/G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: city type: refpossible_keys: cityname key: cityname key_len: 33 ref: const rows: 1 Extra: Using where1 row in set (0.04 sec)-- 删除索引mysql> drop index cityname on city;Query OK, 0 rows affected (0.48 sec)Records: 0 Duplicates: 0 Warnings: 0

    设计索引的原则

  • 搜索的索引列,不一定是SELECT出的列。最适合索引的列应该是WHERE子句中的列或连接子句中的列,而不是SELECT选择列中的列。
  • 使用唯一索引。索引列的基数越大,索引的效果越好。比如出生日期这种列的值就比较多,而性别这种列的值就只有男女。
  • 使用短索引。如果对字符串进行索引,就应该指定一个前缀长度。
  • 利用最左前缀。创建一个n列索引时,实际创建了MySQL可利用的n个索引。多列索引可起几个索引的作用,因为可以利用索引中最左边的列集来匹配行。
  • 不要过度索引。索引会占用磁盘空间,且会降低写操作的性能。
  • 对于InnoDB存储引擎的表,记录默认会按照一定的顺序保存。有主键,则按主键顺序保存。没有主键,但有唯一索引,就按唯一索引的顺序保存。既没有主键,也没有唯一索引,表中会自动生成一个内部列,并按照这个列的顺序保存。按照主键或内部列进行访问时最快的, 所以InnoDB的表,尽量使用自己的主键。InnoDB表的普通索引都会保存主键的键值,索引主键尽可能选择短的数据类型。
  • BTREE索引与HASH索引

  • MEMORY存储引擎的表可以选择使用BTREE索引或HASH索引。
  • HASH索引需要注意的地方:
  • 1. 只用于使用=或<=>操作符的等式比较。

    2. 优化器不能使用HASH索引来加速ORDER BY操作。

    3. MySQL不能确定在两个值之间大约有多少行。如果将MyISAM的表改为HASH索引的MEMORY表,会 影响一些查询的执行效率。

    4. 只能使用整个关键字来搜索一行。

  • 对于BTREE索引,当使用>,<,>=,<=,BETWEEN,!=或者<>,或者LIKE 'pattern' ('pattern'不以通配符开始)操作符时,都可以使用相关列上的索引。
  • 具体索引相关的细节可参考:

    http://dev.mysql.com/doc/refman/5.7/en/optimization-indexes.html

    不吝指正。

    文档

    MySQL管理与优化(7)_MySQL

    MySQL管理与优化(7)_MySQL: 索引的设计与使用 所有MySQL列类型都可以被索引,使用索引是提高SELECT性能的最佳途径。 索引是针对整列的,不支持局部索引。 范例: -- 表mysql> select * from city;+----+----------+| id | city |+----+------
    推荐度:
    标签: mysql 优化 管理与
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top