mysql索引的作用
2015-06-09 09:44
645 查看
假如你有一个表, SQL> CREATE TABLE test_tab ( 2 id INT, 3 name VARCHAR(10), 4 age INT, 5 val VARCHAR(10) 6 ); 你的业务,有一个查询,是 SELECT * FROM test_tab WHERE name = 一个外部输入的数据 刚开始,数据不多的时候,执行效果还不错。 随着数据量的增加,这个查询,执行起来,越来越慢了。 然后在 name 上面 建立了索引 CREATE INDEX idx_test4_name ON test_tab (name ); 这样, 可以加快前面那个查询的速度。 但是,某天,你执行了下面这个SQL, 发现速度又慢了 SELECT * FROM test_tab WHERE age = 25 为啥呢? 因为 age 字段上面,没有索引 索引只在 name 上面有 换句话说, 也就是 WHERE 里面的条件, 会自动判断,有没有 可用的索引,如果有, 该不该用。 多列索引,就是一个索引,包含了2个字段。 例如: CREATE INDEX idx_test_name_age ON test_tab (name, age); 那么 SELECT * FROM test_tab WHERE name LIKE '张%' AND age = 25 这样的查询,将能够使用上面的索引。 多列索引,还有一个可用的情况就是, 某些情况下,可能查询,只访问索引就足够了, 不需要再访问表了。例如: SELECT AVG( avg ) AS 平均年龄 FROM test_tab WHERE name LIKE '张%' 这个时候, name 与 age 都包含在索引里面。 查询不需要去检索表中的数据。
相关文章推荐
- ubuntu 安装 mysql
- MySQL(Flow Control Statements)
- mysql 单引号 双引号
- mysql数据库,delete记录不释放存储空间
- 五种完整性约束分别是什么——基于MySQL数据库的数据约束实例
- MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UP
- mysql主从
- 浅析MySQL中exists与in的使用
- 菜鸟级别存储过程mysql
- mysql的3306端口拒绝访问导致hive无法正常启动
- Rmysql的安装及乱码解决
- Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
- MySQL执行外部sql脚本文件的命令
- MySQL 5.6 for Windows 解压缩版配置安装
- (DBA之路【三】)mysql支持的基本数据类型
- 查看mysql版本
- mysql---数据库设计规范化的五个要求
- mysql数据类型
- (DBA之路【二】)mysql 主流存储引擎的特点
- Redhat 6.6 mysql 5.1升级到5.6步骤