MYSQL的联合查询最好是少用,效能差异巨大
2017-07-26 15:46
337 查看
同样的功能,不同的写法,时间和内存占用差了几千倍,不废话,直接上代码
第一种写法:
代码如下:
内存和时间:
内存使用:96514.53Kb 运行时间:1272.73ms
第二种写法:
代码如下:
内存和时间:
内存使用:9.77Kb 运行时间:11.97ms
由此可見,如果你不急于追赶开发进度的话,建议你使用第二种方法分开写,速度会有明显的差异.
第一种写法:
代码如下:
$Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazhu WHERE uid IN(SELECT id FROM _user WHERE id<5000)"); var_dump($Rs);
内存和时间:
内存使用:96514.53Kb 运行时间:1272.73ms
第二种写法:
代码如下:
$Sql=''; $Rs=DB::get($_ENV['DB'],3,"SELECT id FROM _user WHERE id<5000"); $Sql.=(count($Rs)>0) ? " AND id IN(".strtr(json_encode($Rs,JSON_UNESCAPED_UNICODE),array('{"id":"'=>'','"}'=>'','['=>'',']'=>'')).')' : ''; unset($Rs); $Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazhu WHERE 1=1{$Sql}"); var_dump($Rs); unset($Sql);
内存和时间:
内存使用:9.77Kb 运行时间:11.97ms
由此可見,如果你不急于追赶开发进度的话,建议你使用第二种方法分开写,速度会有明显的差异.
相关文章推荐
- mysql left( right ) join使用on 与where 筛选的差异 博客分类: mysql MySQLSQL数据结构 有这样的一个问题mysql查询使用mysql中left(
- MySQL 联合查询实例
- mysql的联合查询
- Mysql 多表联合查询效率分析及优化
- Mysql 多表联合查询效率分析及优化
- mysql条件查询(联合两张表查询 O2P)
- 详解Mysql多表联合查询效率分析及优化
- MySQL联合查询语法内联、左联、右联、全联
- mysql之union联合查询、子查询、连接查询
- mySql联合两个查询结果用UNION或者UNION ALL
- MySQL的联合查询(内联、外联、左联、右联、全联)
- MySQL多表联合查询语法示例
- mysql中的联合查询union和union all 学习记录。
- mysql 和 mssql联合更新的差异
- MYSQl left join 联合查询效率分析
- mysql 联合查询的时候 统计不知道 为何不准
- MySQL 联合查询
- mysql 三张表联合查询
- mysql的 join联合查询的通俗解释
- MySQL联合查询语法内联、左联、右联、全联