我只是想知道在哪里可以找到有关这些优化的更多信息?谷歌搜索倾向于强调准备好的查询等,而不是从SQL提供的抽象角度来看。
来源: http://www.joelonsoftware.com/articles/LeakyAbstractions.html
SQL语言旨在抽象 远离程序步骤 而是需要查询数据库 只允许你定义你的内容 想要让数据库搞清楚 查询它的程序步骤。但 在某些情况下,某些SQL查询是 比其他人慢几千倍 逻辑上等效的查询。一个著名的 这个例子就是一些SQL 如果你,服务器会快得多 指定“其中a = b和b = c和a = c” 比如果你只指定“其中a = b 并且b = c“即使结果集是 相同。你不应该有 关心程序,只有 规格。但有时候 抽象泄漏并导致可怕 表现,你必须爆发 查询计划分析器和研究什么 它做错了,弄清楚如何 让你的查询运行得更快。
特别关注MySql。
答案 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
的博客