我在两个几乎相同的数据库上运行相同的查询。唯一的区别是第一个数据库的2个表的ID条目从1到9000,而另外两个表的458231044和103511044范围。 (对于相同的9000个条目)
查询多次比较ID和UNIX时间。
在第一个数据库上运行它几乎不需要花费时间。在第二个,至少需要30秒。
问题是否有可能是大数字比较造成的?如果是这样,你如何解决它?比较字符串会更快吗?
答案 0 :(得分:1)
测试这个的简单方法就是试试这个:
SELECT (1 = 1);
SELECT (9000 = 9000);
SELECT (1234567890 = 1234567890);
如果最后一个比较慢,那么
我怀疑它不是数字比较,而是需要执行大型主键或类似真空操作的副作用。另外两个表的范围是否很高,因为它们已被填充并且后来删除了行,或者它们实际上是从那些大的PK开始的?
答案 1 :(得分:1)
我需要更多细节或者一些示例模式来测试,但听起来更像是(缺乏)索引问题而不是数据类型问题。
检查两个数据库上是否有相同的索引。
答案 2 :(得分:0)
它可能是用于该特定索引的数据类型。有意义的是,如果它的较大数据类型比较可能需要更长时间。
另一种可能性是第二个数据库没有设置为以与第一个数据库相同的方式进行索引。