SQL查询 - 在哪里可以找到更多优化花絮,例如a = b AND b = c慢于a = b AND b = c AND a = c?

时间:2010-06-28 18:54:24

标签: sql mysql optimization

我只是想知道在哪里可以找到有关这些优化的更多信息?谷歌搜索倾向于强调准备好的查询等,而不是从SQL提供的抽象角度来看。

来源: http://www.joelonsoftware.com/articles/LeakyAbstractions.html

  

SQL语言旨在抽象   远离程序步骤   而是需要查询数据库   只允许你定义你的内容   想要让数据库搞清楚   查询它的程序步骤。但   在某些情况下,某些SQL查询是   比其他人慢几千倍   逻辑上等效的查询。一个著名的   这个例子就是一些SQL   如果你,服务器会快得多   指定“其中a = b和b = c和a = c”   比如果你只指定“其中a = b   并且b = c“即使结果集是   相同。你不应该有   关心程序,只有   规格。但有时候   抽象泄漏并导致可怕   表现,你必须爆发   查询计划分析器和研究什么   它做错了,弄清楚如何   让你的查询运行得更快。

特别关注MySql。

3 个答案:

答案 0 :(得分:3)

你可以尝试SQL Server Performance,虽然我认为它比其他RDBMS更适合MS SQL Server。就个人而言,我将性能调优视为一个过程,而不仅仅是一组花絮。

一旦你完成了这个过程,你可能会遇到单项优化,但是这个过程本身会让你获得最大的收益。学习如何阅读查询计划(或RDBMS中的等价物),了解服务器的内部/幕后实现,如何存储和使用索引,如何找到IO中的瓶颈,内存,锁定等。

答案 1 :(得分:0)

书籍比网络搜索更好地学习数据库的性能调整。这是一个复杂的主题,从数据库到数据库变化很大,甚至@OMGPonies从版本到版本都说。

我在亚马逊上找到的只有我的SQL性能书,不知道它有多好: http://www.amazon.com/High-Performance-MySQL-Optimization-Replication/dp/0596101716/ref=sr_1_1?ie=UTF8&s=books&qid=1277756707&sr=8-1

答案 2 :(得分:0)

“这些”并非优化 学习分析 - 所有优化的来源 这就是你所需要的。

你提到的不是“优化花絮”。这是一个完全不同主题的例子 盲目使用 。< 但仅限于分析的结果,如果适用的话。

整个方法都是错误的。没有“优化花絮”。只有分析。一旦发现“a = b和b = c”查询运行缓慢 - 您可以开始寻找解决方案,而不是更快。

所以,你有两种乐器可以使用:

BENCHMARK your query goes here

EXPLAIN your query goes here

研究他们的输出,然后询问有关您的服务器,设置和数据库的特定问题。这是唯一的方法。没有“罐头配方”可以提供帮助。

至于一个好奇的阅读,你可以关注名为令人惊讶的http://mysqlperformanceblog.com

的博客