mysql– 我应该何时将列标记为主键?

mysql– 我应该何时将列标记为主键?,第1张

概述我有这样一张桌子:// cookies +----+---------+-------------------+------------+ | id | user_id | token | expire | +----+---------+-------------------+------------+ | 1 | 324

我有这样一张桌子:

// cookies+----+---------+-------------------+------------+| ID | user_ID |       token       |   expire   |+----+---------+-------------------+------------+| 1  | 32423   | dki3j4rf9u3e40... | 1467586386 || 2  | 65734   | erhj5473fv34gv... | 1467586521 || 3  | 21432   | 8u34ijf34t43gf... | 1467586640 |+----+---------+-------------------+------------+

我想了几天.我想我不需要ID列.目前ID列是PK,我在令牌列上有一个唯一索引,使其既独特又快速搜索.

现在我想知道,我可以从表中删除ID列并将令牌列作为PK吗?这是正常的吗?

说实话,到目前为止,我从来没有创建过没有ID列的表(它一直是PK),所以我选择令牌列作为PK是很奇怪的.

最佳答案如果令牌是一个广泛的varchar,我会坚持你已经拥有的AI int PK.加入会更快.插入也是如此.更新可能会以相同的速度,因为为什么要更新该列,从而强制索引树更改.但是,通过不将宽varchar拖动到索引树中,插入对子关系更快.

它归结为偏好和可读性.至于可读性,这种varchar几乎没有.它不像“鞋子”这样的类别.这是一种悲惨的难以理解的非人形.因此,对于可读性,将令牌作为PK的争论很少.尽管如此,有时可能会有点用处.

附加复合材料(多列索引)

当您开始将选择的PK与复合材料中的其他列(您可能选择的其他索引)相结合时,thin int将变得非常明显,是最佳选择.即使是适度大的数据集.

总结

以上是内存溢出为你收集整理的mysql – 我应该何时将列标记为主键?全部内容,希望文章能够帮你解决mysql – 我应该何时将列标记为主键?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1168836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存