Mysql索引总结(一)
数据库开发中索引的使用占了很重要的位置,好的索引会使数据库的读写效率加倍,烂的索引则会拖累整个系统甚至引发灾难。
索引分三类:
index ----普通的索引,数据可以重复
unique ----唯一索引,唯一索引,要求所有记录都唯一
primary key ----主键索引,也就是在唯一索引的基础上相应的列必须为主键
一般的创建索引的语句如下:
ALTER TABLE tb_name ADD INDEX index_name (column_list)
ALTER TABLE tb_name ADD UNIQUE index_name (column_list)
ALTER TABLE tb_name ADD PRIMARY KEY index_name (column_list)
<=,=,>,>=,BETWEEN,IN 以及不以% _ 开头的like 语句使用索引。
为证实like处理方法以下为一个简单的测试:
create table tb_test(fval varchar(50));
先不添加索引,随机插入100W 条记录,并测试like 的查询速度。
CREATE DEFINER=`root`@`localhost` PROCEDURE `P_teset`()
BEGIN
DECLARE v_val VARCHAR(20);
DECLARE v_str VARCHAR(20);
DECLARE v_i INT ;
DECLARE v_j INT; SET v_str ='abcdefghijklmnopqrstuvwxyz';
SET v_i=0;
SET v_j=0; WHILE v_i<1000000 DO
SET v_val =''; WHILE v_j< 13 DO
SET v_val= CONCAT(v_val,SUBSTRING(v_str,1,FLOOR(1+RAND()*26)));
SET v_j=v_j+1;
END WHILE;
SET v_j=0;
INSERT INTO tb_test(fval)
VALUES(v_val); SET v_i =v_i+1;
END WHILE;
END$ DELIMITER ;
使用前后% 测试like 查询速度:
SELECT *
FROM tb_test
WHERE fval LIKE '%ab';
0231条 用时0.531s
SELECT *
FROM tb_test
WHERE fval LIKE 'ab%'
961406条用时1.422s
下面加入索引:
ALTER TABLE tb_test ADD INDEX my_index(fval);
再次测试like 的查询速度:
SELECT *
FROM tb_test
WHERE fval LIKE '%ab';
70231条 用时1.094s
SELECT *
FROM tb_test
WHERE fval LIKE 'ab%'
961406条用时1.485s
表为MyISAM格式。 可以看到加了索引后查询的效率并未得到提升。再使用 explain 关键字查看 like 'ab%' 的运行情况:
Mysql索引总结(一)的更多相关文章
- 深入MySQL索引
MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...
- MySQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...
- MYSQL索引结构原理、性能分析与优化
[转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...
- MySQL索引原理及慢查询优化
原文:http://tech.meituan.com/mysql-index.html 一个慢查询引发的思考 select count(*) from task where status=2 and ...
- 【转】MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- [转]MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- MySQL索引类型总结和使用技巧以及注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable ...
- MySQL索引背后的数据结构及算法原理【转】
本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...
- mysql索引总结----mysql 索引类型以及创建
文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...
- Mysql 索引实现原理. 聚集索引, 非聚集索引
Mysql索引实现: B-tree,B是balance,一般用于数据库的索引.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.而B+tree是B-tree的一个变种,My ...
随机推荐
- Qt通过QToolTip显示浮动信息
QToolTip类的应用十分简单,其QToolTip类中全都是静态方法,如果要显示浮动信息的话使用该函数即可: void QToolTip::showText ( const QPoint & ...
- npm的使用
npm的用途: 用官方的包 用其他人的包 传自己的包给别人用 一: 安装 1.用别人的: npm install argv 这样下载好之后,argv包就放在了工程目录下的node_modules目录中 ...
- ArcGIS API for Silverlight 调用GP服务绘制等值面
原文:ArcGIS API for Silverlight 调用GP服务绘制等值面 GP服务模型如下图: 示例效果图片如下:
- vb 修改数据库
Dim rscode As New ADODB.Recordset ................... Set RsCode = zwpub.DataMdb.DbConnect.Execute(& ...
- 面向对象分析方法(I)
找出最关键的一些业务场景:一般通过动词来寻找,比如招聘系统中,一个应聘人投递一个职位就是一次应聘,应聘就是一个业务场景:一个学生参加某门课的考试,那么考试就是一个业务场景:一个学生去图书馆借书,那么借 ...
- 解决在VMware中安装64位系统时“此主机具有虚拟化支持能力的,但虚拟化技术被禁用”的方法
您已经配置此虚拟机使用64位客户操作系统.然而,64位操作系统不可用.此主机具有虚拟化支持能力的,但虚拟化技术被禁用.这通常是因为虚拟化技术已经在BIOS /固件设置或禁用或主机没有权限改变此设置. ...
- django GET POST
django需要读取客户端get和post请求的值.读取处理方法和异常记录于此. 参考链接: http://stackoverflow.com/questions/12518517/request-p ...
- App Store idfa被拒检查办法
最近应用因为这个问题被拒两次,理由如下: PLA 3.3.12We found your app uses the iOS Advertising Identifier but does not in ...
- A股市场各行业龙头股一览表
A股市场各行业龙头股一览表 一.指标股: 工商银行.中国银行.中国石化.中国国航.宝钢股份. 中国神华.建设银行.招商银行.华能国际.中国联通. 长江电力.中国人寿.中国石油 二.金融: 招商银行.浦 ...
- bind和unbind事件的应用
1.bind 先从一动画的示例看起,如图: 而图中表示的mouseout(移出).mouseover(移入)事件的操作,比较简单,具体代码如下: 从中我可以得出bind()的语法: $().bind( ...