五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划


Author |?董佟一栋,博客专家

编者|唐

头像图表| CSDN下载自东方IC

Product | CSDN博客

这里有5个关于索引和SQL查询性能的测试问题。其中,四个问题是一对二和一对三的答案。只有三个正确答案就被认为是及格,这看起来很简单,不是吗?但事实上只有40%能通过。我们将在试题后面给出答案分析,但我建议你先试一试,看看有多少是正确的!

问题1

以下查询语句是否有性能问题?

方案一:没问题;

选项B:有一个问题。

问题2

以下查询语句是否有性能问题?

方案一:没问题;

选项B:有一个问题。

问题3

下表中的索引有问题吗?

方案一:没问题;

选项B:有一个问题。

问题4

以下查询语句是否有性能问题?

方案一:没问题;

选项B:有一个问题。

问题5

如果存在下表和两个查询语句,哪个查询更快?

选项A:第一个查询更快;

选项B:第二个查询更快;

选项C:两个查询的性能相似。

Resolve

问题1

答案是:B,有一个性能问题。因为在索引字段上使用函数或表达式将导致索引无效。

您可以使用“解释”命令来查看语句的执行计划,最好先对表进行统计分析:

Oracle扫描整个表而不进行索引。再看看MySQl:MySQl使用索引,但它也需要对索引进行转换判断。这不是最好的解决办法。

下一个是SQL Server:

SQL Server使用索引,但也需要对索引进行转换判断;这不是最好的解决办法。

最后看一下PostgreSQL:

PostgreSQL使用完整的表扫描,而不是索引。

正确的方法是修改查询语句:

备注:使用函数索引不是最好的解决方案,它只能用于特定的查询条件;如果查询条件更改为_ char (dt,' yyyy-mm-DD')=' 2019-06-01 '或其他形式,则不能使用该索引。

问题2

问题2

问题3

问题3

col2位于索引的最左端,两个查询都可以使用索引;换句话说,复合索引应该遵循最左边的前缀原则。此外,基于col2创建另一个索引会导致索引重复,这不是一个好的解决方案。

问题4

问题4

对于PostgreSQL,您还需要在创建索引时指定运算符类:

问题5

问题5

亲爱的朋友,你得到了多少正确答案?欢迎留言讨论!

文章的出版已经得到作者的授权。CSDN博客的地址是

[站]

[站]

推荐阅读?

?小米回应50亿元流行病贷款申请;Aiqiyi应用程序崩溃;OpenSSH 8.2发布|极客头条?小米十年后再次创业。高端5G手机和智能手机有多少机会?

?人工智能芯片开发的前世?在家工作,我比工作更累。你相信我吗?

?使用丁香园数据生成疫情分布图(r语言)|博客选择

?2019年度区块链安全简历摘要

你所指的每个人都在看,我把它当爱看待。