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 ...
随机推荐
- GLFW is an Open Source, multi-platform library for OpenGL
http://www.glfw.org/ http://download.csdn.net/user/hengyishu
- SVN命令详解
在开发中,除了在本机文件夹上进行svn更新外,在命令行中进行svn操作也非常关键,下面列举下网站摘抄的一些文档:1.将文件checkout到本地目录 svn checkout path(path是服务 ...
- js实现表格信息的删除和添加
制作一个表格,显示班级的学生信息. 要求: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 2. 点击添加按钮,能动态在最后添加一行 3. 点击删除按钮 ...
- 20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角
教材学习内容总结 Java语言概述 Java是SUN1995年推出的一门高级编程语言,完全面向对象,安全可靠,具有跨平台性(用其编写的语言在任何系统上都能运行,只需安装一个JVM) Java三大平台包 ...
- 7Z命令行
7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za <command> [<switch ...
- [LeetCode]题解(python):052-N-Queens II
题目来源 https://leetcode.com/problems/n-queens-ii/ Follow up for N-Queens problem. Now, instead outputt ...
- SQL语句里怎么获得当前年份(MySQL数据库)
使用函数Year及CurDate的组合: Year(CurDate()) select date_format(min(date),'%Y-%m-%d') as mindate, date_forma ...
- saltstack之(三)认证管理
salt-master和salt-minion之间需要进行认证,认证之后salt-master才能管理salt-minion. 1.在node1:[root@node1 ~]# egrep -v '^ ...
- 密码有效性验证失败。该密码不够复杂,不符合 Windows 策略要求
我在sqlserver2005中建立一个用户的时候,我的用户名和密码是一样的,它不允许我建立报“密码有效性验证失败.该密码不够复杂,不符合 Windows 策略要求”错误,我把密码改成其他一些就可以, ...
- JBOSS的安全配置 .
JBoss版本:JBoss 4.2.2.GA jboss默认配置了以下服务:JMX ConsoleJBoss Web Console为了安全起见,需要用户通过授权进行访问. 一.Java 鉴别与授权服 ...