MySQL Char()或其他Field的顺序UID集生成

Aid*_*ell 5 mysql indexing uuid

尝试谷歌搜索,但:

问题:外部生成MySQL字段的顺序UID值的最佳方法,该字段必须可以表示为字符串.

原因:
磁盘顺序/页面附加插入的通用顺序UUID-ish值,用于在从char [0]转发中搜索字段的索引时执行写入和读取速度的日期前缀.该列将被索引,但寻找最佳数据以增加索引读取和表写入性能而不是普通的UUID.

我最初的想法是附加到或替换UUIDv4生成的字符串的某些部分(即[Unix epoch][remaining UUID4]在固定宽度的char字段中)的某些粒度(可能是填充的纪元)的日期,但我不确定这是否具有所需的页内/磁盘排序结果和索引搜索结果.一个例子是:

12904645950049bceba1cc24e80806dd

这些值必须独立于MySQL本身,因此使用UUID和时间戳而不是自动递增的某些变化.

任何知道MySQL索引内部的人都有任何建议(对于InnoDB表)?

艾登

min*_*das 5

可能有点偏离外观,但看看Twitter的雪花.他们说是:

  • (大致)时间订购(帮助避免昂贵的随机主键BTREE更新)
  • 可直接排序
  • 紧凑

更不用说其他功能(HA等).您既可以使用算法,也可以直接使用它.

整个UID只使用多达64位的空间,所以我猜测索引是非常有效的 - 参见http://www.mysqlperformanceblog.com/2006/10/03/long-primary-key-for-innodb-表格/(反例).