MYSQL優化系列
阿新 • • 發佈:2018-11-01
- MySQL查詢優化之explain的深入解析
- mysql巢狀查詢和聯表查詢優化方法
- MySQL查詢優化:LIMIT 1避免全表掃描提高查詢效率
- Mysql使用索引實現查詢優化
- mysql資料庫查詢優化 mysql效率
- MySQL查詢優化:連線查詢排序淺談
- MySQL慢查詢優化之慢查詢日誌分析的例項教程
- mysql limit查詢優化分析
- php+mysql查詢優化簡單例項
- MySQL查詢優化:用子查詢代替非主鍵連線查詢例項介紹
- 淺談MySQL中的子查詢優化技巧
- MySQL查詢優化--調整內部變數的詳解
- 美團網技術團隊分享的MySQL索引及慢查詢優化教程
- 總結MySQL建表、查詢優化的一些實用小技巧
- MySQL查詢優化之索引的應用詳解
- MySQL查詢優化的5個實用技巧
- Mysql Limit 分頁查詢優化詳解
- 30個mysql千萬級大資料SQL查詢優化技巧詳解
mysql大資料分表後查詢
當資料量猛增的時候,大家都會選擇庫表雜湊等等方式去優化資料讀寫速度,舉例說明:
1億條資料,分100張表
1.首先建立100張表
$i=0; while($i<=99){ echo "$newNumber \r\n"; $sql="CREATE TABLE `code_".$i."` ( `full_code` char(10) NOT NULL, `create_time` int(10) unsigned NOT NULL, PRIMARY KEY (`full_code`), ) ENGINE=MyISAM DEFAULT CHARSET=utf8"; mysql_query($sql); $i++;
2.分表規則:
full_code作為主鍵,對full_code做hash
$table_name=get_hash_table('code',$full_code); function get_hash_table($table,$code,$s=100){ $hash = sprintf("%u", crc32($code)); echo $hash; $hash1 = intval(fmod($hash, $s)); return $table."_".$hash1; }
這樣插入資料前通過get_hash_table獲取資料存放的表名。
3.使用merge儲存引擎來實現一張完整的code表
CREATE TABLE IF NOT EXISTS `code` (
`full_code` char(10) NOT NULL,
`create_time` int(10) unsigned NOT NULL,
INDEX(full_code)
) TYPE=MERGE UNION=(code_0,code_1,code_2.......) INSERT_METHOD=LAST ;
通過select * from code就可以得到所有的full_code資料了。