MySQL對一個字段隨機賦值或遞增賦值

      性能優化時發現,測試造的數據有個字段區分度不高,導致雖然該字段加了索引,但索引失效,還是全表掃描,=還沒like查的快(爲何?很奇怪)。。。所以用字段遞增賦值的方法來改數據。

1.遞增賦值

   set @r:=0;     //設置初始值0
   update student set name=(@r:=@r+1)       //更新student表name列

2.隨機賦值

       可以通過rand()生成0-1之間的小數,需要不同數據類型可以通過使用cast做類型轉換。

         Cast的用法:Cast(value as type)

              二進制,同帶binary前綴的效果 : BINARY

         字符型,可帶參數 : CHAR()

         日 期 : DATE

         時間: TIME

         日期時間型 : DATETIME

         浮點數 : DECIMAL

         整數 : SIGNED

         無符號整數 : UNSIGNED

    如:生成0到100的隨機整數

              update student set age=( SELECT CAST(RAND()*100 AS signed) AS rand) 

3.給字符賦隨機字符串 

       //6位長度的隨機字符串,簡單粗暴

       SELECT SUBSTR(MD5(RAND()),floor(RAND()*26)+1,6) as rand_str;

       函數解釋:

       rand() :產生 0-1之間的小數,簡稱種子.rand()*25 產生的數 在 0- 25 之間,不包括25 

       floor(val): 生成最近接val的最大整數 

       md5() :對字符串進行Md5加密(單向),生成的字符串長度是32位。

       substring(str,pos,len):截取字符串,第一個參數:待截取的字符串,第二個參數:開始的位置(這裏有些不同,下標開始位置爲1,可以試試下),第三個參數:截取的長度.

 

 

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章