我想将APNS设备令牌和FCM registrationID存储在MySQL数据库中。我希望在包含令牌的列上建立索引,因为我将使用该索引来执行查找,并且我希望该表相当大(数百万行)。
据我所知,APNS或FCM使用的设备令牌的大小没有真正的限制。APNS的文档明确声明不对大小进行假设(尽管它似乎是64个字符)。因此,我计划将它作为一个长文本字段存储在MySQL数据库中。但是,MySQL阻止创建大于767个字符的索引。
以下是我所考虑的选择:
这些选项中的哪一种似乎是更好的解决方法?你能想出其他的选择吗?
发布于 2019-07-08 19:20:10
请不要为此使用CLOB (xxxTEXT)数据类型。它们在存储和索引方面效率很低。这是一个设备令牌,所以即使没有指定它的长度,它也不会是几十千字节(MEDIUMTEXT),更不用说很多兆字节(LONGTEXT)了。
看起来,这些目前是64个字符的十六进制数字(0123456789abc hex )。所以,要成为未来的证据,你可以用
token VARCHAR(256) COLLATE latin1_bin NOT NULL作为列的定义。256个,是目前大小的四倍,应该足够一段时间(这是很多移动设备;IPV6地址空间首先会被填满)。而且,latin1字符集和bin排序规则将为有效的索引查找做出贡献。
https://stackoverflow.com/questions/56940738
复制相似问题