mysql建表必須使用主鍵嗎
mysql從5.5版本開始預設使用innodb引擎,innodb表是聚簇索引表,也就是說資料通過主鍵聚集( 主鍵下儲存該行的資料,索引指向主鍵值)
正是由於這種解構,如果後續對主鍵對應的值進行修改,就會導致索引節點的頻繁分裂,效能會下降非常厲害。因此推薦開發的同事們使用和業務沒有任何關聯的自增id來做主鍵(切記不要使用uuid來做主鍵),此外也可以考慮使用其他的方式來生產自增的ID,比如使用Twitter的snowflake演算法或者zk的DistributedAtomicLong來間接實現。使用自增主鍵而不是uuid做主鍵的優點主要有如下幾點:
a、佔用的資料量更小
b、資料順序遞增,不會導致索引節點的頻繁分裂
c、數字型別比字元型別效率更高
正確招式:使用自增id作為主鍵
相關文章
- MySQL 分割槽表,為什麼分割槽鍵必須是主鍵的一部分?MySql
- 限定建構函式必須使用new呼叫函式
- SQL Server分割槽鍵列必須是主鍵一部分SQLServer
- 必須學習RMI,IIOP嗎??
- MySQL 聚簇索引一定是主鍵嗎MySql索引
- 向Mysql主鍵自增長表中新增資料並返回主鍵MySql
- MySQL的InnoDB引擎強烈建議使用自增主鍵的原因MySql
- python必須安裝pip嗎Python
- 必須懂的mysql知識MySql
- 反思|分散式框架是必須的嗎?分散式框架
- MySQL 缺少主鍵的表的效能下降的原因MySql
- MySQL 預設排序真的是按主鍵來排序的嗎MySql排序
- 客戶管理必須要用CRM系統嗎?
- 測試流程必須嚴格執行嗎?
- Mysql分庫分表的主鍵生成演算法MySql演算法
- MySQL主鍵的理解MySql
- 面試前必須知道的MySQL命令【explain】面試MySqlAI
- Mysql系列第三講 管理員必備技能(必須掌握)MySql
- [JAVA] CLASSPATH環境變數必須要配置嗎Java變數
- Flashback database必須要有之前的archivelog嗎?DatabaseHive
- C中int main()必須reture一個值嗎AI
- 查詢使用者中哪些表沒主鍵
- MYSQL INNODB主鍵使用varchar和int的區別MySql
- 【mycat】mycat中配合mysql自增主鍵的使用MySql
- name屬性是表單元素必須的
- MySQL必須flush privileges的兩種情況MySql
- 主鍵列直方圖有用嗎?直方圖
- 玩家要求登出遊戲賬號,遊戲公司必須配合嗎?遊戲
- 必須先建立資料夾再建立檔案嗎
- C語言初學者必須掌握的關鍵字!C語言
- MySQL不建議用UUID做innodb主鍵的幾條原因MySqlUI
- 程式設計師必須瞭解的知識點——你搞懂mysql索引機制了嗎?程式設計師MySql索引
- 三種常用的內建函式--必須牢記函式
- Oracle 建立主鍵自增表Oracle
- mysql 必須掌握的工具pt-query-digestMySql
- MySQL 中的自增主鍵MySql
- MySQL 主鍵自增也有坑?MySql
- oracle rac不支援sdd,必須使用sddpcmOracle