我有两种处理散列ID的方法,但需要你的意见哪一个会比另一个更好,为什么?我只对逻辑感兴趣,而不是我用于散列或表数据类型等的技术!
我将生成一个URL来处理删除产品,而URL将是这样的(最后一段是哈希(SHA1)product.id):
...../delete/product/123c45c789ds654dedkjfghr87frd
情景1: 在表中存储哈希ID,并使用它:
>查询:
DELETE ...... WHERE hash_id = '$url_hash_id'
>表
products
id - INT
hash_id - VARCHAR(40)
情景2: 不要在表中存储散列ID,而是在每次创建URL时生成它并使用它:
>查询:
DELETE ...... WHERE SHA1(id) = '$url_hash_id'
>表
products
id - INT
我能想到的是:
mySql SHA1()
功能和
每次我们需要时都会调用php SHA1()
个函数。答案 0 :(得分:2)
我会使用方案1,因为WHERE SHA1(id) = '$url_hash_id'
不会使用mysql索引。对于大量记录,表扫描会比存储hash_id
和该列索引的额外开销更多地杀死你。