mysql索引创建以及索引使用测试
来源:互联网 发布:linux 破解root密码 编辑:程序博客网 时间:2024/06/06 19:48
对于刚开始学习sql索引的时候,只知道索引可以使sql的查询速度更快但是一直不能很直观的利用数据来测试到底有多快,怎么区测试索引的优化效果如何。
2,插入测试数据--此处只能使用存储过程来插入数据了,创建存储过程gen_data()
6,通过profiles进行查看:
下面就将测试方法及步骤如下
1,创建一个表
CREATE TABLE `persons` ( `Id` int(11) not null auto_increment, `LastName` varchar(255) DEFAULT NULL, `FirstName` varchar(255) DEFAULT NULL, `Address` varchar(255) DEFAULT NULL, `City` varchar(255) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
2,插入测试数据--此处只能使用存储过程来插入数据了,创建存储过程gen_data()
CREATE PROCEDURE gen_data()BEGINDECLARE i INT DEFAULT 1;WHILE i <= 1000000 DOINSERT INTO persons (LastName,FirstName,Address) VALUES ((SELECT floor(rand() * 1000) AS randNum), (SELECT floor(rand() * 1000) AS randNum),(SELECT floor(rand() * 1000) AS randNum));SET i = i + 1;END WHILE;END
3,执行此存储过程,并将数据插入到persons表中
call gen_data();
4,利用profile来查看sql的执行时间
a)首先来查看profile是否开启
执行语句:show variables like "%pro%";
4,开启profile用来查看sql执行时间。
从图中可以看出profile没有开启,现在需要开启profile
b)开启profile的命令:set profiling=1;
5,执行操作并查看执行过程和所用时间等信息
mysql> select count(*) from persons where LastName=3\s;--------------mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1Connection id:220Current database:index_testCurrent user:root@localhostSSL:Not in useCurrent pager:stdoutUsing outfile:''Using delimiter:;Server version:5.1.73 Source distributionProtocol version:10Connection:Localhost via UNIX socketServer characterset:latin1Db characterset:latin1Client characterset:latin1Conn. characterset:latin1UNIX socket:/var/lib/mysql/mysql.sockUptime:4 days 12 hours 58 min 9 secThreads: 2 Questions: 3006129 Slow queries: 0 Opens: 31 Flush tables: 1 Open tables: 13 Queries per second avg: 7.663--------------+----------+| count(*) |+----------+| 979 |+----------+1 row in set (0.63 sec)
6,通过profiles进行查看:
mysql>show profiles;
9| 0.63250900 | select count(*) from persons where LastName=3
其中的一条数据,数据过多且比较不美观,我提取了比较重要的一句,也就是上面的sql语句,执行时间是0.63250900
7,增加索引,目前的索引是最最简单的索引,为了直观的测试索引真的在某种程度上可以提高查询速度
ALTER TABLE persons ADD index indextest(LastName);
Query OK, 1001637 rows affected (4 min 5.94 sec)
Records: 1001637 Duplicates:0 Warnings: 0
8,使用索引,重新查询
mysql> select count(LastName) from persons where LastName=3\s;--------------mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1Connection id:220Current database:index_testCurrent user:root@localhostSSL:Not in useCurrent pager:stdoutUsing outfile:''Using delimiter:;Server version:5.1.73 Source distributionProtocol version:10Connection:Localhost via UNIX socketServer characterset:latin1Db characterset:latin1Client characterset:latin1Conn. characterset:latin1UNIX socket:/var/lib/mysql/mysql.sockUptime:4 days 13 hours 14 min 24 secThreads: 2 Questions: 3006150 Slow queries: 0 Opens: 34 Flush tables: 1 Open tables: 12 Queries per second avg: 7.644--------------+-----------------+| count(LastName) |+-----------------+| 979 |+-----------------+1 row in set (0.45 sec)
执行速度变为了0.45s,也就是说在某称程度上增加了查询数据。我的机器单核,内存小但结果的可见性还是很直观的
阅读全文
0 0
- mysql索引创建以及索引使用测试
- mysql索引使用总结----mysql 索引类型以及创建
- mysql索引(mysql 索引类型以及创建)
- MySQL索引类型以及创建
- mysql 索引类型以及创建
- mysql 索引类型 以及创建
- mysql 索引类型以及创建
- MySQL索引类型以及创建
- mysql索引总结----索引使用测试
- mysql索引总结----索引使用测试
- mysql索引总结----mysql 索引类型以及创建
- mysql索引总结----mysql 索引类型以及创建
- 【转】mysql索引总结----mysql 索引类型以及创建
- mysql索引总结----mysql 索引类型以及创建
- mysql索引总结----mysql 索引类型以及创建
- mysql索引总结----mysql 索引类型以及创建
- mysql索引总结----mysql 索引类型以及创建
- mysql索引总结----mysql 索引类型以及创建
- 《数据可视化与数据挖掘——基于Tableau和SPSS Modeler图形界面》之可视化数据挖掘概述
- C#初识0
- appscan
- 【angular】Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'D
- 欢迎关注公众号→程序式界(Procedural Bounds )
- mysql索引创建以及索引使用测试
- JAXB实现XML和java对象互转以及soapXml和对象互转需要注意的地方
- WinForm控件基础--菜单类控件
- 关于爬虫爬取图片被防盗链的解决
- Rust使用Cargo
- js判断是微信、QQ内置浏览器打开页面
- Rust 变量绑定
- Rust 函数
- AsyncQueryHandler代码分析