CREATE TABLE `UC_USER` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT bigint(20) NOT NULL AUTO_INCREMENT bigint(20) NOT NULL AUTO_INCREMENT bigint(20) NOT NULL AUTO_INCREMENT `USER_NAME` varchar(100) DEFAULT NULL COMMENT '使用者名稱', `USER_PWD` varchar(200) DEFAULT NULL COMMENT '密碼', `BIRTHDAY` datetime DEFAULT NULL COMMENT '生日'姓名', `USER_ICON` varchar(500) DEFAULT NULL COMMENT '頭像圖片', `SEX` char(1) DEFAULT NULL COMMENT '性別, 1:男,2:女,3:保密', `STAT` varchar(10) DEFAULT NULL COMMENT '使用者狀態,01:正常,02:凍結', `USER_MALL` bigint(20) DEFAULT NULL `USER_MALL` bigint(20) DEFAULT NULL `USER_MALL` bigint(20) DEFAULT NULL COMM NULL DEFAULT NULL COMMENT '最後登入時間', `LAST_LOGIN_IP` varchar(100) DEFAULT NULL COMMENT '最後登入IP', `SRC_OPEN_USER_ID`bigbigint(c努), N `EMAIL` varchar(200) DEFAULT NULL COMMENT '郵箱', `MOBILE` varchar(50) DEFAULT NULL COMMENT '手機', `IS_DEL` char(1) DEFAULT 'EMA ) DEFAULT '0' COMMENT '是否有綁定信箱', `IS_PHONE_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否綁定手機', ` (200),7(20),7] ATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '註冊時間', `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', `PWD_INTENSITY``(M LE_TGC` char(64) DEFAULT NULL COMMENT '手機登入標識', `MAC` char(64) DEFAULT NULL COMMENT 'mac位址', `SOURCE` char(1) DEFAULT '0' COMMENT¡管理系統, 0:未知', `ACTIVATE` char(1) DEFAULT '1' COMMENT '激活,1:激活,0:未啟動', `ACTCOMATE_TYPE`charULT) ,0:自動,1:手動', PRIMARY KEY (`ID`), UNIQUE KEY `USER_NAME` (`USER_NAME`), `USER_NAME` (`USER_NAME`), `USER_NAME` (`USER_NAME`), X_MOBILE_TGC` (`MOBILE_TGC `,`ID`), KEY `IDX_EMAIL` (`EMAIL`,`ID`), KEY `IDX_CREATE_DATE` (`害 ) ENGINE =InnoDB AUTO_INCREMENT=7122681 DEFAULT CHARSET=utf8 COMMENT='使用者表'
UC_USER_PK_VARCHAR表,字串ID為主鍵,採用uuid
🎠178585% `ID` varchar(36) CHARACTER SET utf8mb4 NOT NULL DEFAULT '0' COMMENT '
主鍵 ', `USER_NAME` varchar(100) DEFAULT NULL COMMENT '用戶名', '密碼', `BIRTHDAY` datetime DEFAULT NULL COMMENT '生日', `NAME` varchar(200) DEFAULT NULL COMMENT '姓名', `USER_ICON` varchar(500) 對FAULT `USER_ICON` varchar(500) COM FAULT NULL COMMENT '性別, 1:男,2:女,3:保密', `NICKNAME` varchar(200) DEFAULT NULL COMMENT '暱稱', `STAT` varchar(10)與暱稱', `STAT` varchar(10),c08FAULT.N `USER_MALL` bigint(20) DEFAULT NULL COMMENT `USER_MALL` bigint(20) DEFAULT NULL COMMENT `「目前所屬MALL', `LAST_LOGIN_DATE` date」 varchar(100) DEFAULT NULL COMMENT '最後登入IP', ` 。 COMMENT '手機', `IS_DEL` char(1) DEFAULT '0' COMMENT '是否刪除', `IS_EMAIL_CONFIRMED` char(1) DEFAULT '0' COMMENT '是否綁定信箱',,77% COMMENT '是否綁設定手機', `CREATER` bigint(20) DEFAULT NULL COMMENT '創建者', `CREATE_DATE` datetime DEFAULT CURRENT`D)註冊時間datetime DEFAULT CURRENT_TIMESTAMP COMMENT '修改日期', `PWD_INTENSITY` char(1) DEFAULT NULL COMMENT '密碼強度', `MOBILE_TGC` char(64) DEFAULT NULL COMMENT '手機識別 `SOURCE` char (1) DEFAULT '0' COMMENT '1:WEB,2:IOS,3:ANDROID,4:WIFI,5:管理系統, 0:未知', `ACTIVATE` char(1) 指定FAULT '1' ,1:激活,0:未啟動', `ACTIVATE_TYPE` char(1) DEFAULT '0' COMMENT '啟動類型,0:自動,1:手動', 集USER_NAME` (`USER_NAME`), KEY `MOBILE` (`MOBILE`), KEY `IDX_MOBILE_TGC` (`MOBILE_TGC``ID),`( `), KEY `IDX_CREATE_DATE` (`CREATE_DATE`,`ID`), KEY `IDX_UPDATE_DATE` (`UPDATE_DATE`) )COMfENGINE=InnoDB -8
2、500W.0數據,自增
ID
節省一半磁碟空間確定兩個表資料量# 自增id為主鍵的表mysql> select count(1) from UC_USER;
+----------+
| count(1| ) |+----------+
| 5720112 |
+----------+
1 row in set (0.00 sec) sql 1 row in set (0.00 sec)sql >
# uuid為主鍵的表
mysql> select count(1) from UC_USER_PK_VARCHAR_1; count
+-- --------+
| 5720112 |
+----------+
1 row in set (1.91 sec)
來看,自增ID比UUID小一半左右。
主鍵型 |
資料檔案大小
蒟-rw-rw---- 1 mysql mysql 2.5G Aug 11 18:29 UC_USER.ibd |
2.5 G
|
UUID
| -5 11 UC_USER_PK_VARCHAR_1.ibd
5.4 G |
| |
uu2.2個增加 |
相差不大 |
|
主鍵型
SQL語句
執行時間(秒)_CA. FROM test.`UC_USER` t WHERE t .`MOBILE` ='14782121512';0.118
|
|
|
| UUID | SELECT SQL_NO_CACHE t.* FROM test.`UC_USER_PK_VARCHAR_1` t WHERE t.`MOBILE` ='14782121512'; | 0.117
| |
|
|
|
| 自增ID
SELECT SQL_NO_CACHE t.* FROM test.`UC_USER` t WHERE t.`MOBILE` IN( '14782121512','13761460105'); |
0.049 | 🜎 CHE t.* FROM test.`UC_USER_PK_VARCHAR_1` t WHERE t.`MOBILE` IN('14782121512','13761460105'); | 0.040
| |
自增ID |
SELECT SQL_NO_CACHE t.* FROM test.`UC_USER` t WHERE t.`CREATE_DATE`='2013-11-24 10:26:36' ; | 0.139🜎 SELECT SQL_NO_CACHE t.* FROM test.`UC_USER_PK_VARCHAR_1` t WHERE t.`CREATE_DATE`='2013-11-24 10:26:43' ;
|
0.126
2.3 範圍like 主鍵型
SQL語句
執行時間(秒) |
|
(0 SELECT SQL_NO_CACHE t.* FROM test.`UC_USER` t WHERE t.`MOBILE` LIKE '147%' LIMIT 1000; |
1.784
| 1.784
SQL_NO_CACHE t.* FROM test. `UC_USER_PK_VARCHAR_1` t WHERE t.`MOBILE` LIKE '147%' LIMIT 1000;
|
3.196
|
|
自增ID |
SELECT SQL_NO_CACHE t.* FROM test.`UC_USER` t WHERE t.`CREATE_DATE` > '2016-08-01 10:265:7 LIMIT 20; |
0.601 |
UUID
| SELECT SQL_NO_CACHE ttest.
SELECT SQL_NO_CACHE t. -08-01 10:26:36' ORDER BY t.`UPDATE_DATE` DESC LIMIT 20; |
0.543 |
| 自增ID
SELECT SQL_NO_CACHE t.* FROM test.`UC_USER` t WHERE t.`CREATE_DATE` > '2016-07-01 10:26:36' ORDER BY t.`UPDATE_DATE` DESC LIMIT 200; |
2.314 |
|
UUID
SELECT SQL_NO_CACHE t.* FROM test.`UC_USER_PK_VARCHAR_1` t WHERE t.* FROM_DATE`UC_USER_PK_VARCHAR_1` t WHERE t.`6:DATE`. `UPDATE_DATE` DESC LIMIT 200;
| 3.229
|
範圍查詢總數,自增ID比UUID | 🜎 _NO_CACHE COUNT(1) FROM test.` UC_USER` t WHERE t.`CREATE_DATE` > '2016-07-01 10:26:36' ; | 0.514
____CA (1) FROM test.`UC_USER_PK_VARCHAR_1 ` t WHERE t.`CREATE_DATE` > '2016-07-01 10:26:36' ;
|
1.092 |
1.092 |
PS:在有快取的情況下,兩者執行效率並沒有差異很小。
2.4 寫入測試,自增ID 主鍵型
SQL語句
| |
|
自增ID
UPDATE test.`UC_USER` t SET t.`MOBILE_TGC`='T2' WHERE t.`CREATE_DATE` > '2016-05-03 10:26:36' `AND.
|
1.419
UUIDATE
|
UUIDATE `MOBILE_TGC`='T2' WHERE t. `CREATE_DATE` > '2016-05-03 10:26:36' AND t.`CREATE_DATE` |
|
| 自增ID ID, c RTHDAY`, `NAME`, `USER_ICON`, `SEX `, `NICKNAME`, `STAT`, `USER_MALL`, `LAST_LOGIN_DATE`, `LAST_LOGIN_IP`, _DEL`, `IS_EMAIL_CONFIRMED`, `IS_PHONE_CONFIRMED`, `CREATER`, `CREATE_DATE`, `UPDATE_DATE`, `PWD_INTENSITY`, `MOBILE_TGC`, `MAC`, `SOURCE`, ELECT/JIVATE``5,``IV CONCAT('110',`USER_NAME`,8), `USER_PWD `, `BIRTHDAY`, `NAME`, `USER_ICON`, `SEX`, `NICKNAME`, `STAT`, `USER_MALL`,``7_`LALL``&FATE_`] RC_OPEN_USER_ID`, `EMAIL`, CONCAT('110 ',TRIM(`MOBILE`)), `IS_DEL`, `IS_EMAIL_CONFIRMED`, `IS_PHONE_CONFIRMED`, ` `MOBILE_TGC`, `MAC`, `SOURCE`, `ACTIVATE`, `ACTIVATE_TYPE` FROM `test`.`UC_USER_1` LIMIT 100; |
0.105 |
0.105
|
|
插入測試。 `UC_USER_PK_VARCHAR_1`( ID, `USER_NAME`, `USER_PWD`, KNAME`, `STAT`, `USER_MALL`, ` LAST_LOGIN_D ATE `、 `LAST_LOGIN_IP`、 `SRC_OPEN_USER_ID`、 `電子郵件`、 `行動`、 `IS_DEL` _DATE`、 `UPDATE_DATE`、 ` PWD_INTENSITY`, `移動_TGC` , `MAC`, `SOURCE`, `ACTIVATE`, `ACTIVATE_TYPE` ) SELECT UUID(), CONCAT(1110), `生日`, `NAME`, `USER_ICON` , `性別`, `暱稱`, `STAT`, `USER_MALL`, `LAST_LOGIN_DATE`, `LAST_LOGIN_`7_LOGIN_DATE`. 10',TRIM(`移動`)) , `IS_DEL ` , `IS_EMAIL_CONFIRMED`, `IS_PHONE_CONFIRMED`, `CREATER`, , `MAC`, `SOURCE`, `ACTIVATE`, `ACTIVATE_TYPE`測驗` 。 | 在500W記錄表的測試下:
|
(1)一般單一或20筆左右的記錄查詢,uuid主鍵的外差不大幾乎相同效率; (2) 但是範圍查詢特別是上百成千筆的記錄查詢,自增id的效率大於uuid; (3) 在範圍查詢做統計總結的時候,自我增加id的效率大於uuid;(4) 在上面,自增id所佔的錢包就是MySQL使用自增ID主鍵和UUID作為主鍵的優劣對比詳細過程(500W單表)的內容,更多相關內容請關注PHP中文網(www.php.cn)!
|
|
|
|