性能優化時發現,測試造的數據有個字段區分度不高,導致雖然該字段加了索引,但索引失效,還是全表掃描,=還沒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,可以試試下),第三個參數:截取的長度.