- 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数据了。