数据库使用经验分享

写在前面

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

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

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

数据库的重要性

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

王豆豆现在工作中基本一天有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 条评论
登录 后参与评论

相关文章

来自专栏数据和云

DBA入门之路:察微知渐细致入微

在DBA的职业生涯中,要面临无数的艰难险阻、排忧解难,所以细致入微,严谨认真的风格必不可少。养成了察微知渐的习惯,才能在分析诊断故障时层剖缕析,直指核心;而我也...

2073
来自专栏杨建荣的学习笔记

持续近7个小时的索引扫描的查询优化分析 (r5笔记第44天)

昨天客户的DBA反映有一个数据抽取的任务持续了很长时间最后超时退出了,让我看看有什么地方可以调优一下。 找到了对应的日志,发现在一个大表抽取的时候,抽取持续了将...

4085
来自专栏程序员的SOD蜜

评《撸一段 SQL ? 还是撸一段代码? 》

    最近看到一篇博客《撸一段 SQL ? 还是撸一段代码?》,文章举例说明了一个连表查询使用程序code来写可读性可维护性更好,但是回帖意见不一致,我想作者...

2376
来自专栏杂烩

Mycat基准测试报告 原

好久没上OSC,上面安排测下Mycat,于是申请服务器,花了两个周做出这个东西,供以借鉴。

1131
来自专栏Python爬虫实战

MySQL从零开始:数据库简介

从字面意思理解,首先数据库是一个存放东西的库,里面存的东西是数据。以下解释来自百度百科:

792
来自专栏数据和云

Oracle智能之SQL诊断:SQL Tuning Advisor推荐执行计划

编辑手记:在前一段,一篇智能数据库优化的论文引起广泛的关注,其实在 Oracle 数据库中,已经引入了大量自动化和智能化的方法去进行自动调节,包括在 SQL 层...

2845
来自专栏杨建荣的学习笔记

用Oracle的眼光来学习MySQL 5.7的sys(下)(r11笔记第25天)

昨天写了篇分析sys的文章,用Oracle的眼光来学习MySQL 5.7的sys(上)(r11笔记第24天) 收到了一些朋友的反馈,还不错,今天继续努力,再整理...

35413
来自专栏大白虾谈架构

数据库主外建适用场景

925
来自专栏杨建荣的学习笔记

一条delete语句的调优(r4笔记第86天)

今天刚上上班,就接到客户的邮件,说生产环境中执行某一条delete sql语句的时间超过了3个小时。最后客户无奈取消了这次数据清理,准备今天在申请时间重做。所以...

3365
来自专栏别先生

增量数据,如果下次增量数据存在重复数据,如何解决。

1、如果增量数据,每次增量数据可能会存在增量数据,如何解决。思路,首先可以复制一个备份表,然后将主表中存在的数据,在备份表中进行删除,然后将备份表插入到主表,最...

381

扫码关注云+社区