【三分钟小测试】你对SQL性能优化知识知多少?

“SQL性能优化是一种黑魔法
就像炼金术一样:
各种配方难解晦涩,
只有一小部分圈内人才能理解。”

这是一种误解,SQL数据库使用的是大家公知的算法来实现可以预期的执行性能。然而,问题是,人们很容易写出不能发挥最高效算法的SQL查询语句,因而也容易产生无法预期的性能结果。

下面是5道关于SQL性能优化小测试题,这些测试题也许会让你坚信SQL优化就是一种黑魔法。但答案中提供的解释说明会随即让你明白,这些所谓的黑魔法其实是纯粹的科学。

本测试中使用的SQL是基于Oracle数据库。

单从性能的视角看,下面的这些SQL写法是好的还是不好的?

1、查询出年是2012的所有行:

    1. 没问题,不可能再有重大的改进。
    2. 有问题,还可以做重大的优化。

2、查询出最近日期的一行数据:

    1. 没问题,不可能再有重大的改进。
    2. 有问题,还可以做重大的优化。

3、两个查询语句,通过一个普通列查询:

    1. 没问题,不可能再有重大的改进。
    2. 有问题,还可以做重大的优化。

4、查询一个字符串:

    1. 没问题,查询效率会很快
    2. 有问题,可能会产生严重的性能问题

5、如果从百万行数据中查询出几千行时,我们使用:

而当我们只需要从百万行数据中查询出10行时,SQL可以改成这样:

    1. 两种情况下执行性能差不多(+/-10%)
    2. 要看是什么数据
    3. 修改后的SQL效率会很慢(降低至少10%)
    4. 修改后的SQL效率会很高(提高至少10%)
分享这篇文章:

37 Responses to 【三分钟小测试】你对SQL性能优化知识知多少?

  1. rgfdsa 对这篇文章的反应是垃圾
  2. ggg 对这篇文章的反应是俺的神呀
  3. 程军 says:

    还不错.

  4. 李景博  这篇文章
  5. 段毅 对这篇文章的反应是赞一个
  6. slowlyheart 对这篇文章的反应是赞一个
  7. 王莉 对这篇文章的反应是赞一个
  8. 阿荣 对这篇文章的反应是飘过~
  9. 阿荣 says:

    还不错——————

  10. David says:

    第2道测试题:
    里面那个语句的排序没有必要吧,多余,这样会降低的查询速度
    这个语句是有问题的

  11. 小兔子 says:

    呵呵,不错。

  12. cpthack 对这篇文章的反应是垃圾
  13. 朱向斌 对这篇文章的反应是赞一个
  14. 陈春霖 对这篇文章的反应是俺的神呀
  15. 1 对这篇文章的反应是垃圾
  16. lfree says:

    5道题中你答对了 5 题
    你很擅长SQL性能优化,看来是一个数据库高手

  17. 张虞 对这篇文章的反应是标题党
  18. 单守臣  这篇文章
  19. 滩头沙 says:

    第二题有问题吧!

  20. qiulihua 对这篇文章的反应是mark
  21. Frank Feng 对这篇文章的反应是赞一个
  22. dragon 对这篇文章的反应是赞一个飘过~
  23. 唐进山 对这篇文章的反应是俺的神呀mark
  24. lx says:

    第二题有问题。

  25. 冯先森 对这篇文章的反应是俺的神呀
  26. Alex.Lok 对这篇文章的反应是赞一个
  27. 李丹  这篇文章, 并对这篇文章的反应是赞一个敬佩
  28. 罗艳周 对这篇文章的反应是俺的神呀
  29. JackNiu says:

    还不错,其中的一些都是在平时遇到的

  30. FemaleProgrammer 对这篇文章的反应是俺的神呀
  31. mrcheng 对这篇文章的反应是俺的神呀
  32. walt says:

    答案没有?

  33. Adrien 对这篇文章的反应是俺的神呀赞一个
  34. 黄浩男 对这篇文章的反应是俺的神呀
  35. 唐三 对这篇文章的反应是赞一个

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据