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

2022-07-12 20:48:19 字數 1904 閱讀 2633

此文**自:

在web開發中,使用記錄id獲得詳情資訊是乙個比較頻繁的操作,所有必須具有很高的查詢速度,這時,很多小夥伴就會想到使用索引,在id欄位上新增索引。且慢!!! 接下來讓阿都告訴你,為什麼攔著你了。

阿都先建立乙個具有主鍵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
select * from user where name='adu'
根據主鍵id查詢與其他字段查詢相比快了45倍,所以小夥伴們,以後設計資料庫表時,記得加主鍵id。一定要記得。

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

在web開發中,使用記錄id獲得詳情資訊是乙個比較頻繁的操作,所有必須具有很高的查詢速度,這時,很多小夥伴就會想到使用索引,在id欄位上新增索引。且慢 接下來讓阿都告訴你,為什麼攔著你了。阿都先建立乙個具有主鍵id的測試表 user 具有主鍵id create table user id int n...

為什麼必須在主線程中操作UI

因為uikit不是執行緒安全的。如果不在主線程中操作ui,可能會造成如下的情況 1 兩個執行緒同時設定同乙個背景,那麼很有可能因為當前被釋放了兩次而導致應用崩潰。2 兩個執行緒同時設定同乙個uiview的背景顏色,那麼很有可能渲染顯示的是顏色a,而此時在uiview邏輯樹上的背景顏色屬性為b。雖然,...

Vue元件中data選項為什麼必須是函式

官方解釋 data 必須是函式 構造 vue 例項時傳入的各種選項大多數都可以在元件裡使用。只有乙個例外 data 必須是函式。實際上,如果你這麼做 vue.component my component span data 那麼 vue 會停止執行,並在控制台發出警告,告訴你在元件例項中 data ...