作者DarkKiller (System hacked)
看板PHP
标题Re: [请益] 用PHP做运算 还是用MYSQL做运算 ?
时间Mon Nov 5 13:43:02 2012
http://www.mysqlperformanceblog.com/2010/10/25/mysql-limitations-part-3-subqueries/
补一下 IN (subquery) 的效能问题,这是 MySQL issue。
你以为 SELECT * FROM a WHERE col IN (SELECT ...) 会先跑 (SELECT ...) 里面
的东西,然後再给 IN 用。
但 MySQL 一开始就会把 (SELECT ...) 里面的东西改写成 JOIN 语法,而这在某些
情况下会导致效能变差... (因为你已经预期 SELECT 出来的东西不多)
这刚好是个把计算搬到 PHP 端处理的范例... (对 MySQL bug workaround)
※ 引述《DarkKiller (System hacked)》之铭言:
: 然後这边有一个 SQL issue (maybe MySQL only),如果你把 subquery 拆出来自己做
: 就会很快:
: SELECT SQL_NO_CACHE question_id, gender, COUNT(*)
: FROM answer
: WHERE question_id IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
: GROUP BY question_id, gender;
:
: 速度是:
: 40 rows in set (1.09 sec)
:
: 这样能解答你的问题吗?XDDD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.242.135.97
1F:→ cjoe:这串讨论真有趣 又学到一个了 11/05 19:07
2F:推 qwertmn:受教.. 11/06 07:38
3F:推 ihon822:把IN里的东西写成View也可以 11/06 17:15