MySql 与 SQL-Server 的性能问题

标签 mysql sql-server performance database-performance query-performance

我在 MSSQLServer 2008R2 和 MYSQL WorkBench 6.1 上创建了一个包含 5000 万行的表。

我不知道为什么这个查询在 MySql 上需要 16 秒,而在 SQL-Server 上需要 0 秒?

SELECT  avg(speed) FROM tm where RoadId%5=0 and time%3=0;

-不同的 where 子句存在性能差异。

-SQL-Server 和 MySQL 均安装在一台具有 128 GB RAM 和 16 核 CPU 的计算机上。

ps:这是在SQL-Server上创建表的脚本

CREATE TABLE [dbo].[TM](
    [RoadId] [int] NOT NULL,
    [Date] [smallint] NOT NULL,
    [Time] [tinyint] NOT NULL,
    [VType] [tinyint] NOT NULL,
    [Speed] [tinyint] NOT NULL,
 CONSTRAINT [PK_TM_1] PRIMARY KEY CLUSTERED 
(
    [RoadId] ASC,
    [Date] ASC,
    [Time] ASC,
    [VType] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

和 MySQL:

CREATE TABLE `tm` (
  `RoadId` int(11) NOT NULL,
  `Date` smallint(6) NOT NULL,
  `Time` tinyint(3) unsigned NOT NULL,
  `VType` tinyint(3) unsigned NOT NULL,
  `Speed` tinyint(3) unsigned NOT NULL,
  PRIMARY KEY (`RoadId`,`Date`,`Time`,`VType`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最佳答案

SQL Server 自动为此类查询实现并行性,而 mysql 则不会。这基本上意味着 SQL 将使用多个线程来划分表扫描和分析行。我相信 mysql 需要对数据进行分区才能实现相同的功能。

关于MySql 与 SQL-Server 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520035/

相关文章:

mysql - 获取下一个id

php - 通过 PHP 登录到文件或登录到 MySQL 数据库 - 哪个更快?

.net - SqlMetal 错误地生成了我的存储过程 (LINQ) 的返回类型

mysql - 带有 if 语句的 SQL 事务

sql - 表值函数 我的查询计划去哪儿了?

performance - 在 Redis 中创建中型到大型列表/集合/zset/哈希的最有效方法是什么?

mysql - 无法决定标准化或非标准化是否有效

java - java相当于mysql smallint的是什么

c# - 加快字符串连接速度

javascript - 如何使用 leaflet.js 提高将大量特征插入 map 的性能