此文**自:
在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 ...