阿里規範中爲什麼要求表必須有主鍵id

       在web開發中,使用記錄id獲得詳情信息是一個比較頻繁的操作,所有必須具有很高的查詢速度,這時,很多小夥伴就會想到使用索引,在id字段上添加索引。且慢!!! 接下來讓阿都告訴你,爲什麼攔着你了。

      在阿里java開發手冊(嵩山版)明確規定數據庫表必備主鍵id,當然接下來的操作也必須按照大廠的規範來,畢竟阿都也有一個大廠的心。關注微信公衆號【菜鳥阿都】,並回復:開發手冊,可獲得阿里java開發手冊(嵩山版)。

 阿都先創建一個具有主鍵id的測試表【user:具有主鍵id】

CREATE TABLE `user`  (
  `id` int NOT NULL,
  `name` varchar(255) NULL,
  PRIMARY KEY (`id`)
);

 一不小心運行了查詢索引的命令

show index FROM user

圖片列字段說明

Table:表名稱

Non_unique:如果索引不能包括重複詞,則爲0,反則爲1

Key_name:索引的名稱

Seq_in_index:索引的列序列號,從1開始

Column_name:列名稱

 

      尷尬了,竟然還運行出了結果,不知道什麼時候這張新建的user表中已經爲字段id創建了索引,原來,數據庫會默認爲主鍵字段創建索引【主鍵索引】,現在知道爲什麼阿都剛纔攔着那些想給id創建索引的小夥伴了吧

       爲了湊字數,順便研究一下,如果表中具有多個主鍵,數據庫會不會爲每個主鍵都創建索引,老套路,先建它一張表【user:兩個主鍵id,name】

CREATE TABLE `user`  (
  `id` int NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`, `name`)
);

運行命令查看索引

show index FROM user

數據庫爲id和name都創建了索引

       現在終於有點明白阿里規範中爲什麼要求創建主鍵id了,老鐵,別走,順便體驗一波id帶了索引的效果

創建具有主鍵id的user表

CREATE TABLE `user`  (
  `id` int NOT NULL,
  `name` varchar(255) NULL,
  PRIMARY KEY (`id`)
);

     創建儲存過程生成100萬條假數據

CREATE  PROCEDURE `add_vote_memory1`(IN n int)  
BEGIN    
  DECLARE i INT DEFAULT 1;  
    WHILE (i <= n ) DO  
      INSERT into user  (name) VALUEs (FLOOR(RAND() * 1000))
            set i=i+1;  
    END WHILE;  
END  
call add_vote_memory1(1000000)insert into user select id,concat('菜鳥阿都',id)) from tmp_series

調用儲存過程

call add_vote_memory(1000000)

生成了100萬條假數據,在本地數據庫執行這個儲存過程足足花費了10分鐘

select * from user where id=27

查詢時間:0.021s

select * from user where name='adu'

查詢時間:0.890s

       根據主鍵id查詢與其他字段查詢相比快了45倍,所以小夥伴們,以後設計數據庫表時,記得加主鍵id。一定要記得。

 

關注微信公衆號【菜鳥阿都】,並回復:開發手冊,可獲得阿里java開發手冊(嵩山版)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章