索引的一些测试总结

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 建表脚本: create table stu(sid int,msname varchar(20));插入数据脚本:mysql> insert into stu values(1,'a');Query OK, 1 row affected (0.
建表脚本:
 create table stu(sid int,msname varchar(20));

插入数据脚本:

mysql> insert into stu values(1,'a');
Query OK, 1 row affected (0.02 sec)

mysql> insert into stu values(2,'b');
Query OK, 1 row affected (0.03 sec)

mysql> insert into stu values(3,'c');
Query OK, 1 row affected (0.02 sec)

mysql> insert into stu values(4,'d');
Query OK, 1 row affected (0.03 sec)

mysql> insert into stu values(5,'e');
Query OK, 1 row affected (0.02 sec)

mysql> insert into stu values(6,'f');
Query OK, 1 row affected (0.03 sec)

mysql> insert into stu values(7,'g');
Query OK, 1 row affected (0.01 sec)

mysql> insert into stu values(8,'zsd');
Query OK, 1 row affected (0.02 sec)

mysql> insert into stu values(8,'liuzhonghao');
Query OK, 1 row affected (0.03 sec)


使用组合索引:
create index ind_stu_sid_sname on stu(sid,msname);

如果,查询用到了索引中最左边的列。是走索引的。
mysql> explain select * from stu where sid =1;
+----+-------------+-------+------+-------------------+-------------------+-----
----+-------+------+--------------------------+
| id | select_type | table | type | possible_keys     | key               | key_
len | ref   | rows | Extra                    |
+----+-------------+-------+------+-------------------+-------------------+-----
----+-------+------+--------------------------+
|  1 | SIMPLE      | stu   | ref  | ind_stu_sid_sname | ind_stu_sid_sname | 5
    | const |    1 | Using where; Using index |
+----+-------------+-------+------+-------------------+-------------------+-----
----+-------+------+--------------------------+

如果,查询用到的是按msname列走的话,不走索引。

mysql> explain select * from stu where msname ='a';
+----+-------------+-------+-------+---------------+-------------------+--------
-+------+------+--------------------------+
| id | select_type | table | type  | possible_keys | key               | key_len
 | ref  | rows | Extra                    |
+----+-------------+-------+-------+---------------+-------------------+--------
-+------+------+--------------------------+
|  1 | SIMPLE      | stu   | index | NULL          | ind_stu_sid_sname | 48
 | NULL |    9 | Using where; Using index |
+----+-------------+-------+-------+---------------+-------------------+--------
-+------+------+--------------------------+
1 row in set (0.00 sec)


关于like查询的讨论。

再建立一个索引,
mysql> create index ind_msname on stu(msname);

用‘%a’去做查询条件,不走索引

explain select * from stu where msname like '%a';

mysql> explain select * from stu where msname like '%a';

+----+-------------+-------+-------+---------------+-------------------+--------
-+------+------+--------------------------+
| id | select_type | table | type  | possible_keys | key               | key_len
 | ref  | rows | Extra                    |
+----+-------------+-------+-------+---------------+-------------------+--------
-+------+------+--------------------------+
|  1 | SIMPLE      | stu   | index | NULL          | ind_stu_sid_sname | 48
 | NULL |    9 | Using where; Using index |
+----+-------------+-------+-------+---------------+-------------------+--------
-+------+------+--------------------------+
1 row in set (0.00 sec)

用'a%'去做查询条件,走索引

mysql> explain select * from stu where msname like 'a%';

mysql> explain select * from stu where msname like 'a%';
+----+-------------+-------+-------+---------------+------------+---------+-----
-+------+-------------+
| id | select_type | table | type  | possible_keys | key        | key_len | ref
 | rows | Extra       |
+----+-------------+-------+-------+---------------+------------+---------+-----
-+------+-------------+
|  1 | SIMPLE      | stu   | range | ind_msname    | ind_msname | 43      | NULL
 |    1 | Using where |
+----+-------------+-------+-------+---------------+------------+---------+-----
-+------+-------------+

可知,如果针对like条件'%a%'号来说,就是不走索引的。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
开源测试平台横向测评系列『流马』篇:流马使用及总结
【使用篇】 ● 接口测试:创建接口(添加引用公共参数、添加引用自定义参数)、测试用例(参数关联)、业务流程测试实践 ● web自动化测试:元素管理(添加元素)、测试用例(添加元素)、设计测试场景 ● 测试计划、测试集合与测试用例相互之间的关系 【总结篇】 ● 使用总结:常见的使用注意事项,如变量引用、函数引用、关联参数引用等 ● 优化建议:结合真实使用过程,从用户角度出发,提出的7条优化建议 ● 优缺点总结:优点、缺点、评分(从不同角度评测打分)
开源测试平台横向测评系列『流马』篇:流马使用及总结
|
监控 NoSQL 前端开发
|
6月前
|
SQL 存储 关系型数据库
MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
44 0
|
SQL 缓存 关系型数据库
PolarDB-X 混沌测试实践:如何衡量数据库索引选择能力
随着PolarDB分布式版的不断演进,功能不断完善,新的特性不断增多,整体架构扩大的同时带来了测试链路长,出现问题前难发现,出现问题后难排查等等问题。原有的测试框架已经难以支撑实际场景的复杂模拟测试。因此,我们实现了一个基于业务场景面向优化器索引选择的混沌查询实验室,本文之后简称为CEST(complex environment simulation test)。
|
SQL 缓存 监控
我在阿里做测试,入职5个月的回顾与总结
初来阿里实习的时候,我对测试人员的职责知之甚少,在校时更是从未接触过测试工作。一头雾水之际,主管说:“做项目吧,在实战中快速成长”。从学生到校招生,我在思维和心态完成了一次真正意义上的转变,也希望未来能够开启一段新的旅程。在主管、师兄师姐和同事们的帮助下,我从一个懵懂的小白努力学习成长为可以独立完成需求的测试同学,也希望未来自己能够不断进步独自owner项目。特地写下此文,针对试用期内自己对于业务的感悟和沉淀梳理出的测试相关的知识做个总结。
371 0
我在阿里做测试,入职5个月的回顾与总结
|
Web App开发 SQL 安全
登录界面测试总结
登录界面测试总结
200 0
ES删除索引和测试关于文档的操作
ES删除索引和测试关于文档的操作
测试关于索引的操作- 修改索引
测试关于索引的操作- 修改索引
测试关于索引的操作-创建索引
测试关于索引的操作-创建索引
|
传感器 编解码 测试技术
App共有测试特性总结
App共有测试特性总结
90 0