首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现字母数字id的最佳方法

问实现字母数字id的最佳方法
EN

Stack Overflow用户
提问于 2010-02-23 03:29:40
回答 4查看 3.4K关注 0票数 1

我注意到短URL站点使用字母数字id而不是整数作为唯一id。

有没有人有实现的经验?在MySQL中实现此功能的最佳方式是什么?我认为最棘手的部分可能是id的递增和索引。

示例:bit.ly/AbC123

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-23 03:52:55

我怀疑这些字母数字ID中的大多数只是一个转换为Base36的数字ID-请参阅此示例stored function,或者您可以使用自定义函数来实现。

票数 5
EN

Stack Overflow用户

发布于 2010-02-23 03:32:25

老实说,如果您必须使用字母数字序列,我会在内部使用一个整数,然后转换为字母数字,以向用户公开。作为示例编码方案,您可以使用每个数字作为数组的索引,该数组由从A到J(对应于0到9)的字母组成。

一般来说,整数是一种更好的唯一id,因为它们占用的内存更少,而且更容易被索引。

票数 3
EN

Stack Overflow用户

发布于 2010-02-23 03:35:50

我将单独生成散列,但为主键维护一个整数(或BIGINT)列。对于较小的主键,尤其是InnoDB,MySQL工作得最好。

例如:

代码语言:javascript
复制
CREATE TABLE `urls` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `hash` char(6) NOT NULL,
  `url` varchar(1000) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_hash` (`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

编辑:有关生成散列的信息,请参阅this SO post中的base62转换器实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2313530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档