我今天被告知,由于列类型的不匹配,具有类似于此的表结构不利于索引的性能。
表1 id - int (7) PK其他.
表2 id int (11)索引(必须在逻辑上存在于表1-尽管不是通过FK强制执行的)其他索引。
我将MySQL与InnoDB结合使用。
例如,我认为这个问题也可能与Varchar 200 vs 220有关。
我知道索引大小将受到每个项目所需的额外空间(以及一般的存储空间)的影响,可能在5-10%的范围内,但是连接发生所需的时间会增加吗?
发布于 2013-03-14 22:36:39
像对表现不利的短语本质上是毫无意义的。测量是有意义的;意见是,嗯,不是测量。
但是int(7)和int(11)都是32位整数.parens中的数字是指显示宽度;它与存储大小或索引大小无关。
对于varchar()列,可以创建一个基于第一个'n‘字符的索引。这个决定对性能有一定的影响,例如,当您在前三个字符索引的列中搜索“wi球”时。还有几个微妙的点,列的类型为“文本”。仔细阅读创建表。(搜索“长度”)
但是,如果您能够度量varchar(200)/varchar(200的连接列和varchar(220)/varchar(200)的连接列的差异,我会感到有点惊讶。也就是说,除了明显的--在varchar(220)列中存储超过200个字符。
有一种简单的方法可以判断:用您最喜欢的脚本语言编写一些代码,生成几百万行示例数据,加载并测试它。把你的结果也发到这里。
https://dba.stackexchange.com/questions/36730
复制相似问题