使用UUID和int自增主鍵的區別
知其然,知其所以然。在看到生成UUID的程式碼,後帶給我的百度結合自己的經驗再寫下來的區別
一.UUID做主鍵:
優點:
1.保證資料在表和庫都是獨立的,有利於後續的分庫 2.合併表的時候主鍵不會重複 3.有大量資料的時候主鍵不會像int那樣越界 4.有利於處理分散式儲存的資料表
缺點:
1.字串型佔用空間(儲存和索引都佔用比較大的空間) 2.插入和查詢比int主鍵差
二.int主鍵:
優點:
1.儲存空間佔用少 2.查詢速度比較快 3.插入和更新效能也比較好 4.簡單容易記住
缺點:
1.分表略比UUID多一步操作(需要制訂表從特定的數字開始自增) 2.合併表資料容易出現主鍵重複問題 3.分散式儲存的資料表比較難儲存
相關推薦
使用UUID和int自增主鍵的區別
知其然,知其所以然。在看到生成UUID的程式碼,後帶給我的百度結合自己的經驗再寫下來的區別 一.UUID做主鍵: 優點: 1.保證資料在表和庫都是獨立的,有利於後續的分庫 2.合併表的時候主鍵不會重複 3.有大量資料的時候主鍵不會像int那樣越界 4.有利於處理分散式儲存的資料表
mybatis的執行流程 #{}和${} Mysql自增主鍵返回
ola save select .org 經驗 sel 占位符 upd 執行 n Mybatis配置 全局配置文件SqlMapConfig.xml,配置了Mybatis的運行環境等信息。 Mapper.xml文件即Sql映射文件,文件中配置了操作數據庫的Sql語句。此文件需
MySql中測試GUID 與Int自增主鍵 效能對比 總結適用場景
一. 建立以下三個資料表: int 主鍵自增表, guid主鍵表, 關聯以上兩個表的關係表tbl_test_relation CREATE TABLE `tbl_test_int` ( `id` INT(11) NOT NULL AUTO_INCREMENT,
Mysql主鍵選擇之UUID和自增主鍵
引言之前有段時間用postgresql 資料庫,在上雲之後,從自增主鍵變為uuid,感覺uuid全球唯一,很方便。最近用mysql,發現mysql主鍵都是選擇自增主鍵,仔細比較一下,為什麼mysql選擇自增主鍵,有什麼不同。在mysql5.0之前,如果是多個master複製的
Mysql主鍵 UUID做主鍵,自增主鍵及字串主鍵在插入、查詢,分頁等效能
1.插入方面 UUID做主鍵,其他欄位相同,插入100萬條資料,用了3.5個小時 自增主鍵,其他欄位相同,插入相同的100萬條資料,用了16分鐘 有序增長的字串做主鍵,其他欄位相同,插入相同100萬條資料,用了7分鐘 2.查詢方面 UUID做主鍵,select count() fro
PK資料庫 聯合主鍵和自增主鍵
主鍵:主鍵是用來幹嘛的?一般來說是為了建立唯一標識,建立索引的。 主鍵的使用目的: a.為了保證資料查詢唯一; b.提高儲存效率和索引效率。 索引:如果表的讀操作少或者沒有,索引效率會高,如果表的寫操作較多或者大量,建立索引會慢。 主鍵的設定方法有3種: 一種是設定自增長主鍵
Spring使用JdbcTemplate、JdbcDaoSupport和返回表自增主鍵值
publicclassTeacherDaoImplextendsBaseDaoimplementsTeacherDao{ @Override publicStudent seacherStu(int id){ String sql="select * from student where id=?"; fi
Java程式碼TkMyBatis通用Mapper中新增資料時同時獲取自增主鍵ID,與適用uuid 做主鍵時獲取 id
一 . MyBatis mapper.xml檔案中在xml 1. 加入 這句 :useGeneratedKeys="true" keyProperty="ID" keyProperty="資料庫中的主鍵欄位名對應的實體類欄位名" ;【填實體類欄位
Mysql和Mybatis獲取新插入資料自增主鍵的值
Mysql 首先就是mysql獲取最近插入資料id的查詢方法 mysql為我們提供了查詢最近插入自增主鍵ID的值 獲取剛插入的自增長id的值 insert into user (username,age,address) VALUES ('abc',18
oracle結合mybatis 實現自增主鍵的insert和批量insert功能(未完)
一.引子 在最近的一次開發工作中,有自增主鍵這樣的需求,而資料庫使用的是oracle資料庫; 由於oracle 資料庫沒有像mysql和sqlserver 那樣提供自增主鍵的功能,所以在這裡需要換一種思維去實現自增主鍵的功能!進而我們需要引入[序列]的概念!
Mybatis插入時返回自增主鍵(selectKey和useGeneratedKeys)
通過selectKey在插入操作前或者操作後獲取key值,做為欄位插入或返回欄位。(此段程式碼獲取的序列值id作為欄位值插入到實體類中返回) <insert id="insert"> <selectKey keyProperty="id" result
使用mybatis插入自增主鍵ID的數據後返回自增的ID
配置 map batis 對象 insert語句 parameter 用戶註冊 class domain 在開發中碰到用戶註冊的功能需要用到用戶ID,但是用戶ID是數據庫自增生成的,這種情況上網查詢後使用下面的方式配置mybatis的insert語句可以解決: 1 <
INNODB自增主鍵的一些問題 vs mysql獲得自增字段下一個值
nod 天發 內存 ima dialog creat class 成對 例子 今天發現 批量插入下,自增主鍵不連續了。。。。。。。 InnoDB AUTO_INCREMENT Lock Modes This section describes
mysql建立自增主鍵的插入,及自動插入當前時間
user 解決方法 int value mysq src blog creat ecc MYSQL裏用這兩個字段,幾乎都是必須的。 以前都是自動建立的,現在手把手建立的時候,就要找資料來搞定了。 參考URL: http://blog.csdn.net/Weicleer
Mysql數據庫表的自增主鍵重新排列
mysql 主鍵 排列Mysql數據庫表的自增主鍵重新排列1,刪除原有主鍵:ALTER TABLE `表名` DROP `id`;2,添加新主鍵字段:ALTER TABLE `表名` ADD `id` MEDIUMINT( 8 ) NOT NULL FIRST;3,設置新主鍵:ALTER TABLE `表名`
如何獲取數據表中自增主鍵的值
兩個 包含 enc gpo into int acl sql emp 一、MySql數據庫 當向數據庫中插入一條數據的時候,默認是拿不到自增主鍵的值的, 需要設置如下兩個屬性才可以拿到主鍵值! 設置userGeneratedKeys屬性值為true:使用自動增長的主
MyCat自增主鍵
mycat全局序列號是MyCAT提供的一個新功能,為了實現分庫分表情況下,表的主鍵是全局唯一,而默認的MySQL的自增長主鍵無法滿足這個要求。全局序列號的語法符合標準SQL規範,其格式為:next value for MYCATSEQ_XXXMYCATSEQ_XXX 是序列號的名字,MyCAT自動創建新的序列
php處理ORACLE自增主鍵問題
post tp5 pdo 執行 pan 替換 class 自動 rom php和mysql不寫主鍵mysql可以自動生成主鍵; 想用pdo批量向mysql插入數據只能每條一個pdostarment->execute 看tp5.1的源碼提供的方案是 INSERT IN
Mybatis+Mysql插入數據庫返回自增主鍵id值的三種方法
文章 param mysql int sta source nbsp 通用 映射 一、場景: 插入數據庫的值需要立即得到返回的主鍵id進行下一步程序操作 二、解決方法: 第一種:使用通用mapper的插入方法 Mapper.insertSelective(r
EntityFramework實體默認值遇到Oracle自增主鍵
數據 默認值 max sta rem IT nextval clas ger 1. Oracle實現主鍵自動增長 一般我們在Oracle實現主鍵自動增長,通常通過序列加觸發器實現。 定義序列用於獲取遞增數字 CREATE SEQUENCE 序列名 [INCREMENT B