写在前面
从三月中旬到昨天为至,王豆豆基本中午都会去学车,练习科目二,想说练车真的好累,想要通过考试一定要学会控制速度,还好只要坚持下来,结果就会是好的。
王豆豆已经有一个多月都没有更新文章了,有好几个小伙伴在问王豆豆最近怎么了?怎么好久都没有写文章了?这是懒癌犯了,哈哈。。。
今天王豆豆想给大家分享一下王豆豆在工作中使用数据库的经验。
数据库的重要性
数据库的使用频率与公司的产品和工作内容有很大关系。
王豆豆现在工作中基本一天有80%的时间都需要与数据库打交道,使用频率非常高,查询数据、检查数据、修改数据模拟新测试点等等,这是因为王豆豆现在所做的产品是属于后台类产品,没有前端界面,全靠postman模拟前端系统访问,同时靠任务去驱动业务流程,这就需要测试人员对数据库的结构、SQL语言和linux平台比较熟悉。
对数据库操作过程中,王豆豆使用最多的还是select语句,其他语句使用频率不高。王豆豆主要分享在查询数据中使用到的几个小技巧。
01
limit
不知道大家对limit熟悉不?以前王豆豆写过几篇数据库的系列文章中也提到过这个词,那这个使用方法是什么呢?
Limit—大家都知道是限制,在数据库中使用limit时,其实是限制数据的条数,可以是查询时限制查询到的条数,也可以是修改/删除时限制修改/删除时的条数。
Limit是目前王豆豆使用最频繁的语句。
select * from task order by task_id desc limit 10;
2.修改任务表中最前面5条记录的状态为open
Update task set task_status = ‘open’ order by task_id desc limit 5;
limit后面跟数据的条数,可以是10,50,100,500,1000等,任意数字都可以,当然0也可以,只不过这表示查询到的数据条数为0条。
为什么王豆豆如此热衷于使用limit呢?
因为在实际工作中数据库经常使用到的表数据量是非常大的,对于在大量数据中查询到自己想要的数据,非常慢,这不仅对影响操作人的时间,而且如果同时操作的人多了,对数据库的性能非常有影响,特别是线上的数据库,王豆豆每次上线一个项目之后需要同步跟踪线上数据,对线上数据库操作时更注意,不能太浪费数据库的性能。
要操作数据库过程中,limit可以解决一些问题,但如果想要查询速度蛮快,那还需要有另外的操作。
02
提高查询效率
一旦碰到查询大量数据,查询数据的速度真是太慢了。
这让我想到了在学车过程中,教练一直提醒我,你的速度太快了,压离合,控制车速,通过考试最重要的就是速度要慢,但是王豆豆直到快考试了,速度还是一直居高不下,以至于王豆豆在临近考试时还在忧虑中,速度怎样才能慢下来。
在实际工作中,王豆豆却希望所有都快,王豆豆最受不了的就是查询速度太慢了,看到一直在query中就想着要不要修改一下语句。
最怕看到这张图片:
那我们在查询中如何才能提高查询速度呢?
1.当数据量太大时,我们可以通过多条件查询,在查询中尽量可能地去细化条件,输出更多的查询条件组合,这能提升一步的速度
2.尽量减少使用 select * 的用法
星号大家都知道表示查询出表中所有的字段,正因为是这个原因,为了提升效率尽量减少使用,程序中的代码绝对不允许使用的。
3.找到索引字段,根据索引字段去查询
索引中又分为唯一索引和普通索引,唯一索引查询速度优于普通索引。
使用唯一索引查询任务表:select * from task order by task_id desc;
使用普通索引查询任务表:select * from task order by task_order_no desc;
如果一个索引中包含多个字段,那个想要构成索引查询那查询条件中需要包含这几个字段。
例如这样的:KEY `Idx_task_type_next_run_at` (`task_type`,`task_next_run_at`)
select task_id from task where task_type = "msgsender" and task_next_run_at >= "2018-04-03 12:00:00";
在查询中可以使用这些方法来提高查询效率,但是数据量如果是实在太多了,查询速度还是会慢的,但是相比而言会好很多。
03
REPLACE函数
REPLACE函数—虽然不是王豆豆经常使用的语句,但是王豆豆觉得这个语句真的非常好用,如果掌握了用法能节省很多修数据的时间,特别是修改一张表中某些数据中某个字段部分数据时,这时REPLACE的优势就完全体现出来了。
用法:字段名 = REPLACE(str1,str2,str3)/字段名 = REPLACE(字段名,被替换字符串,替换字符串)
含义:用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串
UPDATE `task` SET task_id = REPLACE(task_id,’22’,’33') WHERE task_create_at >= '2018-04-02';
REPLACE函数不仅可以对某个字段进行部分数据增加,还可以进行修改和删除,方法灵活多变,在实际使用过程可以根据实际场景进行运用。
作为软件测试人员不仅我们要熟练掌握数据库的使用和SQL语言,这样会大幅提升我们的工作效率,而且我们还需要对数据库中的数据保持高度的敏感,这是因为我们经常检查的就是数据,而正是这些数据决定了我们的功能或业务是否正确实现了。
其次之外,我们对表结构,表与表之间的关联性,数据的存储和取值之间的关系也需要多掌握,作为测试人员对数据库和其中的数据,我们还有很多要学的,要掌握的,学习都需要一定的过程,掌握也需要花费一定的时间,但坚持下来去学习,学会去分析,结果最终一定不会坏的。
多谢大家对王豆豆的支持和关注,希望在新年我们能一起成长得更好。