mysql是否需要花费大量时间来处理随机字母而不是数字的索引?

时间:2015-02-28 07:55:11

标签: mysql database

我有一个网站存储了像website.com/picture?id=12345

这样的链接

我正在考虑将数字ID反映并将其转换为类似于#34; Af3Gh2"这样人们就会发现更难迭代并刮掉所有链接

select * from table where row_id=12345等查询的计算速度是否比select ... where row_id="Af3Gh2"

更快

row_id列已编入索引

1 个答案:

答案 0 :(得分:0)

以下是主键的性能排名,从最快到最慢auto-increment-integer> random-integer> random-char> random-varchar

有足够的材料说明为什么会这样。简而言之:磁盘上的数据按主键(也称为群集)的顺序进行传播。因此随机比顺序慢。在插入记录时使用顺序索引,在磁盘上它会在最后一条记录之后。但是使用随机索引,每个插入都需要在两个记录之间进行楔入。在磁盘上,事情需要时间来实际移动。

char字段比varchar快,因为字符可以按原样读取。但是要读取varchar数据,您需要(1)读取第一个字节以获得实际长度。 (2)读不。字符数等于现在已知的长度。

字符(char / varchar)比整数慢,因为整数 - 整数比较很容易。要比较两个字符类型数据,首先需要将它们转换为整数,或者以某种方式将它们转换为词法(字典)顺序。主要是通过逐个字符匹配两个字符串来完成。因此,懒散。