6

谁能向我解释为什么 MySQL 和 SQL Server 对于这个简单的 select 语句在性能上有显着差异?

SELECT email from Users WHERE id=1

目前数据库只有一张表,有 3 个用户。MySQL 时间平均为 0.0003,而 SQL Server 为 0.05。这是正常的还是 MSSQL 服务器配置不正确?

编辑:
两个表具有相同的结构,主键设置为id,MySQL 引擎类型为 InnoDB。
我尝试了查询,WITH(NOLOCK)但结果是一样的。

4

3 回答 3

2

服务器是同级别的吗?硬件也有所作为。同时访问数据库的人数是否大致相同?是否有任何其他应用程序使用相同的硬件(数据库通常不应与其他应用程序共享服务器)。

就我个人而言,我不会担心这种差异。如果您想查看哪个性能更好,则将数百万条记录添加到数据库中,然后测试查询。一般来说,数据库在小型表上的简单查询都表现良好,即使是设计不良或设置不正确的表。要知道您是否会遇到性能问题,您需要在类似于 prod 的硬件上使用大量数据和许多同时用户进行测试。

于 2012-06-15T16:58:43.750 回答
1

诊断低成本查询的问题是固定成本可能会超过可变成本。并不是说我是 MS-Fanboy,而是我更熟悉 MS-SQL,所以我将主要解决这个问题。

MS-SQL 可能有更多的优化和查询解析开销,这在决定是否使用索引、查看统计信息等时会增加查询的固定成本。MS-SQL 还会记录很多关于查询计划的内容。执行并存储大量数据以供将来优化,这会增加开销

当查询需要很长时间时,这一切都会有所帮助,但是在对单个查询进行基准测试时,似乎显示出较慢的结果。

于 2012-06-15T15:37:50.073 回答
0

有几个因素可能会影响该基准,但最重要的可能是MySQL 缓存查询的方式。

当您运行查询时,MySQL 将缓存查询的文本和结果。当再次发出相同的查询时,它只会从缓存中返回结果,而不是实际运行查询。

另一个重要因素是 SQL Server 度量标准是总经过时间,而不仅仅是查找该记录或从缓存中提取它所花费的时间。在 SQL Server 中,打开它SET STATISTICS TIME ON会将其分解得更多,但您仍然没有真正比较同类。

最后,我不确定这个基准测试的目标是什么,因为这是一个过于简单的查询。您是否在比较新项目的平台?你的选择标准是什么?

于 2012-06-15T17:14:00.193 回答