Mysql双查询请求

时间:2012-03-12 11:52:43

标签: php mysql

我有一张桌子:

table_1
id   time
1    2012-03-05 12:50:00
2    2012-03-05 12:51:00
3    2012-03-05 12:52:00
4    2012-03-05 12:53:00

table_2
userid   level
100      1
256      2
112      3
400      2
15       1

第一次请求:

$sql = 'SELECT `id`, `time` FROM table_1 WHERE `time` > NOW() ORDER BY `id` DESC LIMIT 1';

第二次请求:

$sql = 'SELECT COUNT(*) FROM table_2 WHERE `userid` = 100 LIMIT 1';

如何将这两个请求合并为一个请求?

例如这个表:

id   time                count
1    2012-03-05 12:53:00 1

id   time                count
1    2012-03-05 12:53:00 0

如果我们在table_2中没有任何记录 谢谢!

2 个答案:

答案 0 :(得分:0)

将两个非常简单,无关的查询合并为一个更复杂的查询并不是获得性能的最佳方法。您可能从一次往返中获得轻微提升,但查询将很快变得无法维护。

相反,为避免额外的往返时间,请使用类似mysqli::multi_query的内容将它们同时发送到数据库。这意味着您可以保持查询简单,并且仍然只能到数据库进行一次往返。

答案 1 :(得分:0)

由于它们没有任何关联,简单而蛮力,我会这样做。不实用,但会这样做。

SELECT
      `id`, 
      `time`,
      ( select COUNT(*) 
           FROM table_2 
           WHERE `userid` = 100 ) as UserCount
   FROM 
      table_1 
   WHERE 
      `time` > NOW() 
   ORDER BY 
      `id` DESC 
   LIMIT 1