【问题标题】:Which one is Faster, SUB-Query or IN-Query?哪个是 Faster、SUB-Query 或 IN-Query?
【发布时间】:2015-02-11 13:28:22
【问题描述】:

如果我想选择whether i am followingthreads 与否。

我有两种方法可以做到这一点...但我不知道哪一种在性能和速度方面会更好。谁能帮帮我?

方法 1

$cui = $_SESSION['user_id'];

$data  = mysqli_query($con,"
SELECT t.*,( select count(follow_id) from follows where object_id = 
t.thread_id AND object_type='thread' AND user_id = $cui) as me_follow FROM threads t
");
  while($row = mysqli_fetch_assoc($data)){
       /*
           $row['me_follow'] = 0 if i aint following
           $row['me_follow'] = 1 if  i am following  
       */
   }

方法2

$cui = $_SESSION['user_id'];

  $data = mysqli_query($con,"SELECT * FROM threads");
  $ids = array();
  while($row = mysqli_fetch_assoc($data)){
       $ids[] = $row['thread_id'];
   }
$ids = join($ids,",");
$data = mysqli_query($con,"SELECT COUNT(*) FROM follows WHERE object_id IN($ids) AND user_id = $cui");

【问题讨论】:

    标签: mysql sql performance join subquery


    【解决方案1】:

    一次往返胜过两次。这是因为在将 SQL 发送到服务器、让它解析、执行它并将结果发回时存在一些开销。 (通常)最好在一次往返中完成所有事情。

    【讨论】:

    • 1 表示“一次往返胜过两次”。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多