我一直在比较 MySQL 和 MonetDB。显然,在 MySQL 中需要几分钟的查询在 Monet 中只需几秒钟即可执行。
但是,我发现了一个真正的连接封锁。
我有 2 张桌子——每张桌子有 150 列。在这些 (150+150) 列中,大约有 60 个是 CHARACTER LARGE OBJECT 类型。这两个表都填充了大约 50,000 行 - 所有 150 列中都有数据。CLOB 类型列中数据的平均长度为 9,000(从 2 个字符到 20,000 个字符不等)。两个表的主键具有相同的值,并且连接始终基于主键。默认情况下,这些行按主键的升序插入。
当我用大约 5 个条件和限制 1000 对这两个表运行内部连接查询时,莫奈在 5 秒内处理了这个查询,这与 MySQL(19 秒)相比是完全令人印象深刻的。
但是当我使用左连接或右连接以相同的条件和限制运行相同的查询时,Monet 花了大约 5 分钟,这明显落后于 MySQL(仅 22 秒)。
我使用 trace 语句查看了日志,但内部和左连接的跟踪或多或少相同,除了左连接跟踪中每个操作的时间要高得多。
此外,当以多个时间间隔运行时,相同的连接查询执行所花费的时间会相差 2 或 3 秒。
与传统的基于关系行的数据库相比,阅读了很多关于莫奈的速度的信息,我觉得我错过了一些东西,但不知道是什么。
谁能告诉我为什么这样的查询执行时间会有如此大的差异以及如何防止它?
非常感谢有任何帮助。提前非常感谢。
PS:我在 Macbook Pro 上运行 Monet - 2.3 GHz Core i7 - 具有 8 GB RAM 的四核处理器。