数据库使用经验分享

写在前面

从三月中旬到昨天为至,王豆豆基本中午都会去学车,练习科目二,想说练车真的好累,想要通过考试一定要学会控制速度,还好只要坚持下来,结果就会是好的。

王豆豆已经有一个多月都没有更新文章了,有好几个小伙伴在问王豆豆最近怎么了?怎么好久都没有写文章了?这是懒癌犯了,哈哈。。。

今天王豆豆想给大家分享一下王豆豆在工作中使用数据库的经验。

数据库的重要性

数据库的使用频率与公司的产品和工作内容有很大关系。

王豆豆现在工作中基本一天有80%的时间都需要与数据库打交道,使用频率非常高,查询数据、检查数据、修改数据模拟新测试点等等,这是因为王豆豆现在所做的产品是属于后台类产品,没有前端界面,全靠postman模拟前端系统访问,同时靠任务去驱动业务流程,这就需要测试人员对数据库的结构、SQL语言和linux平台比较熟悉。

对数据库操作过程中,王豆豆使用最多的还是select语句,其他语句使用频率不高。王豆豆主要分享在查询数据中使用到的几个小技巧。

01

limit

不知道大家对limit熟悉不?以前王豆豆写过几篇数据库的系列文章中也提到过这个词,那这个使用方法是什么呢?

Limit—大家都知道是限制,在数据库中使用limit时,其实是限制数据的条数,可以是查询时限制查询到的条数,也可以是修改/删除时限制修改/删除时的条数。

Limit是目前王豆豆使用最频繁的语句。

  1. 查询任务表中最前面的十条记录

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语言,这样会大幅提升我们的工作效率,而且我们还需要对数据库中的数据保持高度的敏感,这是因为我们经常检查的就是数据,而正是这些数据决定了我们的功能或业务是否正确实现了。

其次之外,我们对表结构,表与表之间的关联性,数据的存储和取值之间的关系也需要多掌握,作为测试人员对数据库和其中的数据,我们还有很多要学的,要掌握的,学习都需要一定的过程,掌握也需要花费一定的时间,但坚持下来去学习,学会去分析,结果最终一定不会坏的。

多谢大家对王豆豆的支持和关注,希望在新年我们能一起成长得更好。

原文发布于微信公众号 - 资深Tester(zishentester)

原文发表时间:2018-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏伪君子的梦呓

UZER.ME 云端应用

“卸载你电脑上的软件,你需要的只是你的浏览器。”这是 UZER.ME 的 Slogan。 只要打开UZER.ME 这个网站,就可以直接在浏览器里运行类似 Ph...

3977
来自专栏美团技术团队

Shield:支撑美团点评品类最丰富业务的移动端模块化框架开源了

引言 一直以来,如何能更高效地开发与维护页面是Android与iOS开发同学最主要的工作和最关心的问题。随着业务的不断发展,根据特定业务场景产生的定制化需求变得...

3959
来自专栏python开发者

Ubuntu Desktop安装及桌面美化(修复图片)

Ubuntu Desktop安装及桌面美化 1   开篇概述 本 系统的文章主要是讲互联网方向的开发主题。根据目前主流互联网公司的技术架构,Linux是必不可少...

3105
来自专栏玉树芝兰

如何用Python做Web开发?——Django环境配置

用Python做Web开发,Django框架是个非常好的起点。如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手。

762
来自专栏美团技术团队

大圣魔方——美团点评酒旅BI报表工具平台开发实践

背景 当前的互联网数据仓库系统里,数据中心往往存放了大量Cube化或者半Cube化的数据。如果需要将这些数据的内在关系体现出来,需要写大量的程序和SQL来发现数...

3949
来自专栏非著名程序员

基于开源项目搭建属于自己的技术堆栈

? 在技术面试的时候肯定都会问到使用了哪些第三方框架,为什么使用它而不用其他的。身边朋友就有这样的亲身经历: 面试官:你们项目中加载图片都是用的什么框架? 面...

2357
来自专栏coding

yii2实战之初见端倪PHP框架大PK安装yii2项目初始化配置服务小结

1225
来自专栏程序员互动联盟

数据库常见的图形工具有哪些?

疑惑一 MySQL常用的图形化管理工具有哪些? 现在随着PHP+MySql越来越火,周边相关产品也受到众多人的关注。在PC上修改数据库,查看数据库内容是研发人员...

3559
来自专栏Albert陈凯

2018-09-05 银行安全控件原理研究背景正文结语

https://blog.csdn.net/Bone_ACE/article/details/80765299

671
来自专栏IT大咖说

Mars在移动网络的探索和实践

摘要 Mars这个名字来自于电影《火星救援》,它是一个结合移动 App 所设计的基于 socket 层的解决方案,在网络调优方面有着更好的可控性。微信高级工程师...

3347

扫码关注云+社区