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