七、mysql索引选择

1.myisam,bdb,innodb,memory 单表至少支持16个索引

2.create index id_index on emp (id) 为emp表创建一个名为id_index的id字段的索引

3.drop index id_index on emp 删除emp表的id_index 索引

4.explain xxxxxxx,可以查看相关的执行结果,用于优化表用

5.最合适的索引列是“条件列”,而不是“选择列”
  比如 select name from emp where year >= 2014;
  那么最好是在year字段上创建索引,而不是name字段

6.使用索引的字段,字段值最好是具有唯一性的,因为越具有唯一性,索引意义越大

7.btree索引通过索引访问,而hash索引则进行全表扫描

七、mysql索引选择,布布扣,bubuko.com

时间: 2024-08-05 17:06:19

七、mysql索引选择的相关文章

单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式

单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式 一 表结构如下:  MySQL  5.5.30  5.6.20 版本, 表大概有815万行 CREATE TABLE t_audit_operate_log (  Fid bigint(16) AUTO_INCREMENT,  Fcreate_time int(10) unsigned NOT NULL DEFAULT '0',  Fuser varchar(50) DEFAULT '',  Fip bigint

单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式

一 表结构如下:  MySQL  5.5.30  5.6.20 版本, 表大概有815万行 CREATE TABLE t_audit_operate_log (  Fid bigint(16) AUTO_INCREMENT,  Fcreate_time int(10) unsigned NOT NULL DEFAULT '0',  Fuser varchar(50) DEFAULT '',  Fip bigint(16) DEFAULT NULL,  Foperate_object_id big

MySQL索引选择及添加原则

索引选择性就是结果个数与总个数的比值. 用sql语句表示为: SELECT COUNT(*) FROM table_name WHERE column_name/SELECT COUNT(*) FROM table_name 一般来说(例如书 "SQL Tuning"),如果选择性超过 20% 那么全表扫描比使用索引性能更优. 但MySQL是没有计算索引的选择性的,只是预测逻辑IO操作的数量,因此对于MySQL索引要慎重选择. 索引几大原则: 1.选择唯一性索引 唯一性索引的值是唯一的

MySQL索引选择及规则整理

索引选择性 索引选择性就是结果个数与总个数的比值. 用sql语句表示为: SELECT COUNT(*) FROM table_name WHERE column_name/SELECT COUNT(*) FROM table_name 一般来说(例如书 “SQL Tuning“),如果选择性超过 20% 那么全表扫描比使用索引性能更优. 但MySQL是没有计算索引的选择性的,只是预测逻辑IO操作的数量,因此对于MySQL索引要慎重选择. 举个栗子,tinyint类型的列,用以保存性别,就算用上

10 MySQL索引选择与使用

索引概述 每种存储引擎对每个表至少支持16个索引,总索引长度至少256字节. MyISAM和InnoDB的表默认创建BTREE索引.MEMORY引擎默认使用HASH索引,但也支持BTREE MySQL目前不支持函数索引,但支持前缀索引. MyISAM支持的前缀索引最大长度为1000字节;InnoDB支持的前缀索引最大程度是767字节. CREATE TABLE 创建索引时是按照字符数计量的,所以对于多字节的字符集,要考虑字符和字节的关系. MySQL还支持FULLTEXT(全文本)索引,用于全文

MySQL索引那些事

原文链接 大家有没有遇到过慢查询的情况,执行一条SQL需要几秒,甚至十几.几十秒的时间,这时候DBA就会建议你去把查询的 SQL 优化一下,怎么优化?你能想到的就是加索引吧? 为什么加索引就查的快了?这就要从索引的本质以及他的底层原理说起. 索引是什么 那索引到底是什么呢?你是不是还停留在大学学『数据库原理』时老师讲的“索引就像字典的目录”这样的概念?老师讲的没错,但没有深入去讲. 其实索引就是一种用于快速查找数据的数据结构,是帮助MySQL高效获取数据的排好序的数据结构. 索引的好处 举例说明

MySQL如何选择合适的索引

先来看一个栗子 EXPLAIN select * from employees where name > 'a'; 如果用name索引查找数据需要遍历name字段联合索引树,然后根据遍历出来的主键值去主键索引树里再去查出最终数据,成本比全表扫描还高. 可以用覆盖索引优化,这样只需要遍历name字段的联合索引树就可以拿到所有的结果. EXPLAIN select name,age,position from employees where name > 'a'; 可以看到通过select出的字段

深入浅出分析MySQL索引设计背后的数据结构

在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题: 1.为什么innodb表需要主键? 2.为什么建议innodb表主键是单调递增? 3.为什么不建议innodb表主键设置过长? B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.B通常

mysql 索引和查询优化

对于任何DBMS,索引都是进行优化的最主要的因素.对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降.如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找. 例如:假 设存在组合索引it1c1c2(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引.查询语句select * from t1 where c1=1也能够使用该索引.但是,查询语句select * f