在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據庫/ 如何優(yōu)化使用GUID作為id的MySQL數(shù)據庫操作?

如何優(yōu)化使用GUID作為id的MySQL數(shù)據庫操作?

我們之前的系統(tǒng)使用的都是自增的id,但是因為安全和系統(tǒng)設計原因,現(xiàn)在都改成了使用guid。這時我們發(fā)現(xiàn),每次CRUD操作,比如update xxx from table_a where guid='asdhkjasfdjasgf12312uykjsadjashd'時,都會掃描全部記錄。(目前我們表內有5W條數(shù)據,基本每次query都是掃描5W條數(shù)據)

請問,我們該如何進行優(yōu)化?
多謝

回答
編輯回答
帥到炸

guid字段添加普通索引

這是我測試數(shù)據:

加索引id執(zhí)行計劃:

explain SELECT * FROM qxd.qxd_community where id = '540a1cb9-04cc-ce17-9933-81bb115328bb'
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE qxd_community ref id id 108 const 1 Using index condition

未加索引id執(zhí)行計劃:

clipboard.png

2018年8月11日 19:09
編輯回答
柚稚

guid一定是唯一鍵,如果原來的id還用的話,guid設成unique key, 否則設成primary key更好。

alter table table_a add unique key(guid);
2018年8月23日 16:25
編輯回答
老梗
alter table table_a add index guid_idx(guid(10))

PS: 5w的數(shù)據量不算大,可以這樣干。 如果量超過30w級別就要重新考慮表設計了,比如分區(qū)、分表或者其他思路。

2017年9月4日 01:18