欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql中存儲UUID去除橫線的方法

 更新時間:2015年02月05日 11:13:19   投稿:junjie  
這篇文章主要介紹了Mysql中存儲UUID去除橫線的方法,本文給出了3個Mysql函數(shù)實現(xiàn)去除去UUID中的橫線,需要的朋友可以參考下

參考:

http://stackoverflow.com/questions/412341/how-should-i-store-guid-in-mysql-tables

通常用UUID做唯一標識,需要在數(shù)據(jù)庫中進行存儲。

UUID的格式

復(fù)制代碼 代碼如下:

String string = UUID.randomUUID().toString(); 
System.out.println(“uuid:” + string);
uuid:05ba463f-1dab-471f-81c7-58e0b06f35f0

數(shù)據(jù)庫中直接存儲UUID的壞處:

完全‘隨機'的字符串,例如由MD5()、SHA1()、UUID()產(chǎn)生的。它們產(chǎn)生的每一個新值都會被任意地保存在很大的空間范圍內(nèi),這會減慢INSERT及一些SELECT查詢。1)它們會減慢INSERT查詢,因為插入的值會被隨機地放入索引中。這會導(dǎo)致分頁、隨機磁盤訪問及聚集存儲引擎上的聚集索引碎片。2)它們會減慢SELECT查詢,因為邏輯上相鄰的行會分布在磁盤和內(nèi)存中的各個地方。3)隨機值導(dǎo)致緩存對所有類型的查詢性能都很差,因為它們會使緩存賴以工作的訪問局部性失效。如果整個數(shù)據(jù)集都變得同樣“熱”的時候,那么把特定部分的數(shù)據(jù)緩存到內(nèi)存中就沒有任何的優(yōu)勢了。并且如果工作集不能被裝入內(nèi)存中,緩存就會進行很多刷寫的工作,并且會導(dǎo)致很多緩存未命中。

如果保存UUID值,就應(yīng)該移除其中的短橫線,更好的辦法是使用UHEX()把UUID值轉(zhuǎn)化為16字節(jié)的數(shù)字,并把它保存在BINARY(16)列中。

復(fù)制代碼 代碼如下:

DELIMITER $$ 
CREATE FUNCTION `GuidToBinary`( 
    $Data VARCHAR(36) 
) RETURNS binary(16) 
BEGIN
DECLARE $Result BINARY(16) DEFAULT NULL; 
    IF $Data IS NOT NULL THEN
SET $Data = REPLACE($Data,'-',”); 
SET $Result = CONCAT(UNHEX(SUBSTRING($Data,7,2)),UNHEX(SUBSTRING($Data,5,2)),UNHEX(SUBSTRING($Data,3,2)), UNHEX(SUBSTRING($Data,1,2)), 
                UNHEX(SUBSTRING($Data,11,2)),UNHEX(SUBSTRING($Data,9,2)),UNHEX(SUBSTRING($Data,15,2)) , UNHEX(SUBSTRING($Data,13,2)), 
                UNHEX(SUBSTRING($Data,17,16))); 
END IF; 
RETURN $Result; 
END
$$ 
CREATE FUNCTION `ToGuid`( 
    $Data BINARY(16) 
) RETURNS char(36) CHARSET utf8 
BEGIN
DECLARE $Result CHAR(36) DEFAULT NULL; 
    IF $Data IS NOT NULL THEN
SET $Result = CONCAT(HEX(SUBSTRING($Data,4,1)),HEX(SUBSTRING($Data,3,1)),HEX(SUBSTRING($Data,2,1)), HEX(SUBSTRING($Data,1,1)) , ‘-',  
                HEX(SUBSTRING($Data,6,1)),HEX(SUBSTRING($Data,5,1)),'-', 
                HEX(SUBSTRING($Data,8,1)) , HEX(SUBSTRING($Data,7,1)),'-', 
                HEX(SUBSTRING($Data,9,2)),'-',HEX(SUBSTRING($Data,11,6))); 
END IF; 
RETURN $Result; 
END

復(fù)制代碼 代碼如下:

CREATE FUNCTION `UUIDTOBIN`() RETURNS binary(16)  
BEGIN
DECLARE my_uuid char(36);  
SET my_uuid = UUID();  
RETURN CONCAT(UNHEX(LEFT(my_uuid,8)),UNHEX(MID(my_uuid,10,4)),UNHEX(MID(my_uuid,15,4)),UNHEX(MID(my_uuid,20,4)),UNHEX(RIGHT(my_uuid,12)));  
END
CREATE FUNCTION `BINTOUUID`(UUID BINARY(16)) RETURNS char(36)  
BEGIN
RETURN CONCAT(HEX(LEFT(uuid,4)),'-', HEX(MID(uuid,5,2)),'-', HEX(MID(uuid,7,2)),'-',HEX(MID(uuid,9,2)),'-',HEX(RIGHT(uuid,6)));  
END

相關(guān)文章

  • MySQL 關(guān)于表復(fù)制 insert into 語法的詳細介紹

    MySQL 關(guān)于表復(fù)制 insert into 語法的詳細介紹

    本篇文章是對MySQL中關(guān)于表復(fù)制insert into語法進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • 教你為MySQL數(shù)據(jù)庫換擋加速

    教你為MySQL數(shù)據(jù)庫換擋加速

    如果你是個賽車手,并且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫里去換,那會是什么感覺呢?MySQL數(shù)據(jù)庫為開發(fā)人員所做的就好像是按按鈕換引擎;它讓你選擇數(shù)據(jù)庫引擎,并給你一條簡單的途徑來切換它。
    2010-02-02
  • mysql 如何使用JSON_EXTRACT() 取json值

    mysql 如何使用JSON_EXTRACT() 取json值

    這篇文章主要介紹了mysql如何使用JSON_EXTRACT() 取json值的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MySQL如何計算連續(xù)登錄天數(shù)

    MySQL如何計算連續(xù)登錄天數(shù)

    這篇文章主要介紹了MySQL如何計算連續(xù)登錄天數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • mysql 觸發(fā)器實現(xiàn)兩個表的數(shù)據(jù)同步

    mysql 觸發(fā)器實現(xiàn)兩個表的數(shù)據(jù)同步

    本文將介紹mysql 觸發(fā)器實現(xiàn)兩個表的數(shù)據(jù)同步,需要的朋友可以參考
    2012-11-11
  • mysql 復(fù)制記錄實現(xiàn)代碼

    mysql 復(fù)制記錄實現(xiàn)代碼

    復(fù)制記錄,采用自查詢方式
    2009-12-12
  • SQL中表鎖定(LOCK、UNLOCK)的具體使用

    SQL中表鎖定(LOCK、UNLOCK)的具體使用

    本文主要介紹了SQL中表鎖定(LOCK、UNLOCK)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-04-04
  • MySQL轉(zhuǎn)換Oracle的需要注意的七個事項

    MySQL轉(zhuǎn)換Oracle的需要注意的七個事項

    有很多應(yīng)用項目, 剛起步的時候用MySQL數(shù)據(jù)庫基本上能實現(xiàn)各種功能需求,隨著應(yīng)用用戶的增多,數(shù)據(jù)量的增加,MySQL漸漸地出現(xiàn)不堪重負的情況:連接很慢甚至宕機,于是就有MySQL轉(zhuǎn)換Oracle的需求,應(yīng)用程序也要相應(yīng)做一些修改。
    2010-12-12
  • mysql 遠程連接數(shù)據(jù)庫的方法集合

    mysql 遠程連接數(shù)據(jù)庫的方法集合

    MySQL數(shù)據(jù)庫不允許從遠程訪問怎么辦?本文提供了三種解決方法:
    2008-03-03
  • SQL處理時間戳時如何解決時區(qū)問題實例詳解

    SQL處理時間戳時如何解決時區(qū)問題實例詳解

    時間戳時間不分東西南北、在地球的每一個角落都是相同的,下面這篇文章主要給大家介紹了關(guān)于SQL處理時間戳時如何解決時區(qū)問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08

最新評論