情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b,c    a,c   都可以走索引的,其他条件的查询不能走索引. 组合索引 有“最左前缀”原则.就是只从最左面的开始组合,并不是所有只要含有这三列存在的字段的查询都会用到该组合索引. 验证过程如下所示: 首先,在SQLyog中建立一个user表,如下图所示: 对中间3个字段(user_name,us…
C:\Users\Administrator>sqlplus /nolog SQL :: Copyright (c) , , Oracle. All rights reserved. SQL> conn /as sysdba 已连接. SQL> create table t as select * from dba_objects; 表已创建. SQL> insert into t select * from t; 已创建59262行. SQL> / 已创建118524行.…
索引用来加速查询.正常来说,当查询数据时,MySQL 需要从表的第一条记录开始,读取整个表的内容,进行查询. 但如果有索引,MySQL 可根据索引快速定位需要查询条目的具体位置,加快了查询速度. 原理 索引的原理是将被索引列的值,单独取出来存到另一种结构中以获取快速查询的效果. 当列有这些属性中任意一个时,会被索引, PRIMARY KEY, UNIQUE, INDEX, 以及 FULLTEXT. 大部分索引以 B-trees 结构存储.但有些例外: Spatial Data 数据类型,一种基于…
说明 在MySQL中,并不是你建立了索引,并且你在SQL中使用到了该列,MySQL就肯定会使用到那些索引的,有一些情况很可能在你不知不觉中,你就“成功的避开了”MySQL的所有索引. 索引列参与计算 如果where条件中age列中使用了计算,则不会使用该索引.如果需要计算,千万不要计算到索引列,想方设法让其计算到表达式的另一边去. SELECT `sname` FROM `t_stu` WHERE `age`=20; -- 会使用索引 SELECT `sname` FROM `t_stu` WH…
一.什么是索引 索引是表的目录,会保存在额外的文件中,针对表中的指定列建立,专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可.在查找数据库内容之前可以先在索引中查询,快速定位查询数据.用在where,like,having等查询语句. 二.建立索引的列 1.越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间,一个磁盘页可以放更多的数据,查询效率更高. 2.简单的数据类型更好:整型数据…
大家好,我是程序员啊粥,前边给大家分享了 *MySQL InnoDB 索引模型 在 MySQL InnoDB 中,为什么 delete 删除数据之后表数据文件大小没有变 如何计算一个索引的长度 如何查看 SQL 的执行计划 以上几篇都是偏理论知识,从今天开始,我们开始 MySQL 索引实战内容,具体介绍一下 MySQL 索引的用法. 首先介绍一下索引的相关语法: 索引语法 -- 创建索引 CREATE INDEX indexName ON table_name (column_name); AL…
继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLE table1 (   customer_id VARCHAR(10) NOT NULL,   city VARCHAR(10) NOT NULL,   PRIMARY KEY(customer_id) )ENGINE=INNODB DEFAULT CH…
一. 执行计划能告诉我们什么? SQL如何使用索引 联接查询的执行顺序 查询扫描的数据函数 二. 执行计划中的内容 SQL执行计划的输出可能为多行,每一行代表对一个数据库对象的操作 1. ID列 ID列中的如果数据为一组数字,表示执行SELECT语句的顺序:如果为NULL,则说明这一行数据是由另外两个SQL语句进行 UNION操作后产生的结果集 ID值相同时,说明SQL执行顺序是按照显示的从上至下执行的 ID值不同时,ID值越大代表优先级越高,则越先被执行 演示 可以看到上面的执行计划返回了3行…
InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和索引存放在表空间里面跨平台可直接拷贝使用InnoDB中必须包含AUTO_INCREMENT类型字段的索引表格很难被压缩 MyISAM:不支持事务,回滚将造成不完全回滚,不具有原子性不支持外键不支持外键支持全文搜索保存表的具体行数,不带where时,直接返回保存的行数DELETE 表时,先drop表,然后重建表MyI…
引用:http://blog.sina.com.cn/s/blog_53729e4601011wja.html MySql外键设置详解   (1) 外键的使用: 外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦其实这正式外键在强制你保证数据的完整性和一致性.这是好事儿.…