相关疑难解决方法(0)

INT和VARCHAR主键之间是否存在真正的性能差异?

使用INT与VARCHAR作为MySQL中的主键之间是否存在可衡量的性能差异?我想使用VARCHAR作为参考列表的主键(想想美国,国家代码),并且同事不会将INT AUTO_INCREMENT作为所有表的主键.

我的论点,详见这里,是INT和VARCHAR之间的性能差异可以忽略不计,因为每个INT外键引用将需要一个JOIN,使参考的意义上说,VARCHAR键则直接呈现的信息.

那么,有没有人有这个特定用例的经验以及与之相关的性能问题?

mysql performance myisam innodb primary-key

161
推荐指数
7
解决办法
10万
查看次数

SQL Server中的Data Vault 2.0

在数据保险库2.0中,一个哈希值用于处理业务密钥,并将此哈希值用作表的主键。链接表也使用哈希主键创建关系。

我的问题是散列基本上是随机的,查询优化器无法应用任何良好的估计,因为统计信息(当然)不适用于随机分布的数据。

因此,查询优化器在要经常排序的地方使用了奇怪的计划(因为它认为只有4行可以排序)。由于我肯定不是第一个处理sql server中的数据保险库的人,因此它如何可修复?

当查询优化器使用索引查找或联接运算符时,它会完全错过行估计,因此会选择荒谬的计划。

我必须使用连接提示和查询提示(例如(FORCE ORDER))来修饰它们,以从中获得任何好处。

常见的处理方法是什么?

sql-server random hash join data-vault

2
推荐指数
1
解决办法
924
查看次数