索引的用途

提高查询的效率,相当于在字典中建立的字母表或者偏旁部首表,这样查询当然比一行一行查询要快的多

每个存储引擎可以建立索引的长度是不一样的,但每个表至少支持16个索引,总的索引长度至少为256个字节。大多数存储引擎有更高的限制。

创建删除索引

create index index_name [USING index——type] on table_name(index_col_name)

其中:index_col_name: col_name[(length)] [ASC | DESC]

删除:drop index index_name on tabel_name

索引的类别:

Mysiam和Innodb存储引擎默认的都是BTEE索引。

而MEMORY存储引擎支持HASH索引,hash索引的问题是:只能使用=或者

<=>操作符比较,用于Order by不能使用索引。

查看索引使用的情况

mysql> show status like 'Handler_read%';

其中Handler_read_key代表一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。Handler_read_rnd_next代表在数据文件中读下一行的请求次数,如果大量的扫描表的话,此值将很高,此时应该建立索引,或者当前的索引建立不合理,需要重新建立索引。

+-----------------------+-------+

| Variable_name | Value |

+-----------------------+-------+

| Handler_read_first | 1 |

| Handler_read_key | 141 |

| Handler_read_next | 12 |

| Handler_read_prev | 0 |

| Handler_read_rnd | 24 |

| Handler_read_rnd_next | 495 |

设计索引的原则:

搜索的索引列,不一定是所要选择的列,即最合适索引的列是出现在where子句中的列,或者连接子句中指定的列,而不是出现在select关键字后的选择列表中的列。

使用唯一的索引。索引列的基数越大,就是不同的列越多,索引的效果就越好。

使用短索引、前缀索引。对于大的字符串来说,只要指定前面的一些字符来建立索引即可,因为索引也是需要磁盘空间的。

使用最左索引,就是建立索引时写在第一个位置的列。

不要过度使用索引:索引的建立生成都要占据额外的磁盘空间,并降低写操作的性能。在修改表的使用,索引也必须更新。只要保持所需的索引有利于查询优化

注意点:

当建立复合索引的时候,一般查询条件中使用到最左的索引列,索引会被使用

当查询条件中使用like关键字时,%不能放在开头,否则不会使用索引。

当查询条件中使用or关键字时,应该每个查询条件都有独立的索引

最新文章

  1. SQL面试笔试经典题(Part 1)
  2. ABP源码分析三十九:ABP.Hangfire
  3. 规范化的软件项目演进管理--从 Github 使用说起
  4. iOS开发中的错误整理,通过storyboard做项目,遇到view看不见,或者view被压缩的情况
  5. Type-base dispatch
  6. 基于visual Studio2013解决面试题之1409基数排序
  7. iOS数据持久化之数据库:SQLite和FMDB
  8. C# Webform中读取Windows AD/LDAP域用户清单
  9. PAT-B-1020 月饼 (25)(25 分)
  10. C# linq语句学习
  11. EvansClassification
  12. struts2+mybatis3+log4j2+bulma+mysql8元工程
  13. img的complete和onload
  14. 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器
  15. [转] 一个小时学会Git
  16. 实验三 Java敏捷开发与xp实现
  17. nodejs+mysql入门实例(改)
  18. Linux命令行介绍
  19. 结束autocad异常进程
  20. 学习7__STM32--SPI外设之双机通信---

热门文章

  1. Hadoop提供的reduce函数中Iterable 接口只能遍历一次的问题
  2. 提升vector性能的几个技巧
  3. HTML5 and Websocket
  4. POJ3111 K Best —— 01分数规划 二分法
  5. 织梦CMS使用JS实时动态调用评论数
  6. 通过ODC方法改善软件测试:3个案例研究
  7. python 使用multiprocessing需要注意的问题
  8. SQLite学习手册(开篇)
  9. 洛谷P2575高手过招——SG函数初试
  10. 【转】IntelliJ IDEA搭建Spring环境