我已经使用Microsoft SQL Server多年了,但最近才开始在我的Web应用程序中使用MySQL,而且我渴望知识.
为了继续使用长长的"隐藏功能"问题,我想知道MySQL的任何隐藏或方便的功能,这将有望提高我对这个开源数据库的了解.
在尝试理解SQL语句的执行方式时,有时建议您查看解释计划.在解释(理解)解释计划时应该经历的过程是什么?应该突出的是,"哦,这真的很棒吗?" 与"哦不,那不对."
在准备好这个问题的答案后,我发现我无法验证我的答案.
在我的第一个编程工作中,我被告知IN ()谓词中的查询IN会对父查询中包含的每一行执行,因此应该避免使用.
例如,给定查询:
SELECT count(*) FROM Table1 WHERE Table1Id NOT IN (
SELECT Table1Id FROM Table2 WHERE id_user = 1)
Run Code Online (Sandbox Code Playgroud)
Table1 Rows | # of "IN" executions
----------------------------------
10 | 10
100 | 100
1000 | 1000
10000 | 10000
它是否正确?IN谓词实际上如何工作?
我总是采用首先使用最少的索引集部署数据库,然后根据性能指示添加/更改索引的方法.
这种方法运作得相当好.但是,它仍然没有告诉我在哪里可以提高性能.它只告诉我性能如此糟糕以至于用户抱怨它.
目前,我正在为许多应用程序重构数据库对象.
因此,我不应该费心寻求性能改进,因为"过早优化是所有邪恶的根源"吗?
在重构应用程序代码时,开发人员一直在寻找提高代码质量的方法.有没有办法不断寻求数据库性能的改进?如果是这样,您发现哪些工具和技术最有帮助?
我曾简要介绍过"数据库引擎调优顾问",但没有发现它有用.也许我只需要更多的经验来解释结果.
我有一个在关系数据库中运行的查询,它不能满足用户的期望.
我应该提供哪些信息以及应该避免哪些信息,以便我能够在本网站上获得有效的帮助?
我们遇到了数据库性能方面的问题,我有很多.NET Profilers的经验,并且总是对应用程序进行分析,但很多开发人员现在都在等待,直到很晚(当它出现问题时)开始分析并尝试收集有关如何解决问题的数据.
这可能不是一个单独的答案,更多的是"帮助我是一个数据库IDIOT"帖子,并寻找任何方向个人建议,建议和如何追踪问题的经验.
至于我们使用SQL 2005的设置,我在生产中的访问权限非常有限,只能通过门户界面运行SQL数据库引擎优化顾问和SQL事件探查器,我可以复制和粘贴,但这就是它.我想做的一件事是获得生产查询和调用的真实快照,这样我就可以在较低的环境中将它们加载到调优引擎中,我可以尝试修改数据库以便我可以从引擎调整中获取建议顾问.
我在SQL Server(2008 R2 Developer Edition)中也有一个非常大的表,它有一些性能问题.
我想知道另一个DBMS是否会更好地处理大型表.我主要只考虑以下系统:SQL Server 2008,MySQL和PostgreSQL 9.0.
或者,正如上面提到的引用问题所示,表大小和性能主要是索引和缓存的一个因素吗?
此外,更大的正常化会提高性能,还是会阻碍它?
编辑:
下面的评论之一声称我含糊不清.我有超过2000万行(20年的库存数据和2年的期权数据),我试图弄清楚如何将性能提高一个数量级.我只关心读/计算性能; 我不关心写性能.唯一的写入是在数据刷新期间,那些是BulkCopy.
我已经有了一些索引,但希望我做错了,因为我需要加快速度.我也需要开始查看我的查询.
提供的评论和答案已经帮助我了解如何开始分析我的数据库.我是程序员,而不是DBA(因此Marco的书推荐是完美的).我没有那么多的数据库经验,我以前从未对数据库进行过分析.我会尝试这些建议并在必要时报告.谢谢!
performance ×4
sql ×3
database ×2
mysql ×2
optimization ×2
oracle ×2
postgresql ×1
sql-server ×1