我有一个网站存储了像website.com/picture?id=12345
这样的链接我正在考虑将数字ID反映并将其转换为类似于#34; Af3Gh2"这样人们就会发现更难迭代并刮掉所有链接
select * from table where row_id=12345
等查询的计算速度是否比select ... where row_id="Af3Gh2"
row_id列已编入索引
答案 0 :(得分:0)
以下是主键的性能排名,从最快到最慢auto-increment-integer
> random-integer
> random-char
> random-varchar
有足够的材料说明为什么会这样。简而言之:磁盘上的数据按主键(也称为群集)的顺序进行传播。因此随机比顺序慢。在插入记录时使用顺序索引,在磁盘上它会在最后一条记录之后。但是使用随机索引,每个插入都需要在两个记录之间进行楔入。在磁盘上,事情需要时间来实际移动。
char
字段比varchar
快,因为字符可以按原样读取。但是要读取varchar数据,您需要(1)读取第一个字节以获得实际长度。 (2)读不。字符数等于现在已知的长度。
字符(char / varchar)比整数慢,因为整数 - 整数比较很容易。要比较两个字符类型数据,首先需要将它们转换为整数,或者以某种方式将它们转换为词法(字典)顺序。主要是通过逐个字符匹配两个字符串来完成。因此,懒散。