请查看以下'测试'表结构,它有5566行。
请查看以下查询的详细说明:
select * from test where sig_date='2014-03-15' and symbol='AXP' order by score;
我创建了具有不同名称和复合PRIMARY KEY的相同结构表,并插入了存在于' test'中的相同数据。表。
现在解释了查询,它只选择了9条记录:
select * from test_com_indx where sig_date='2014-03-15' and symbol='AXP' order by score;
当我检查2个表大小时,test_com_indx占用更多空间,两个表都有相同的数据。
我的信念是,'测试' table有PRIMARY KEY作为id,数据以id的顺序存储。
并且在' test_com_indx'表,数据按照复合PRIMARY KEY的顺序存储。因此,两个表都没有单独的索引副本
并且两个表应该具有相同的大小。
如果我的假设错了,为什么两张桌子都有不同的尺寸,请纠正我?
提前致谢。
答案 0 :(得分:1)
进行一些阅读,information_schema.TABLES
的结果可能与现实不同步,这可以解释为什么你的TABLE_ROWS不同。运行ANALYZE TABLE test, test_com_indx
可能会使它们同步。
如果之后大小保持不同,我或者错误地解析问题,或者因为模式中存在这些差异而错误。
VARCHAR(10)
,测试有VARCHAR(25)
。或/和它因为无保证关于内部如何工作,即使你做了两次完全相同的事情。 SQL数据库是声明性的,您不应该知道它如何回答您的查询,从而释放服务器以执行最有效的操作。造成这种情况的原因有很多......