在单个查询中查找各种表中的总记录

时间:2015-12-22 12:11:52

标签: mysql sql select count union

目前我正在使用此查询,是否有替代此查询,这将更快地工作。

SELECT 
    SUM(result1),
    SUM(result2),
    SUM(result3)
FROM (
    (
        SELECT 
            0 as result1,0 as result2,COUNT(*) as result3
        FROM 
            table1
    )
    UNION
    (
        SELECT 
            count(*) as result1,0 as result2,0 as result3
        FROM 
         table2
    )
    UNION
    (
        SELECT 
            0 as result1,count(*) as result2,0 as result3
        FROM 
            table3
    )
    ) as allresult

4 个答案:

答案 0 :(得分:3)

以上查询的替代解决方案如下:

$('.grid').click(function() {
$('.grid-full').remove();
  $(this).after('<li class="grid grid-full"></li>');
});

答案 1 :(得分:1)

RequestQueue中添加表名并执行以下查询:

WHERE clause

答案 2 :(得分:1)

从这个查询中削减一些性能负载的非常简单的方法:

使用UNION ALL而不是UNION。 UNION ALL将返回重复项,如果除了它之间的唯一区别之外,只有UNION,是UNION删除这些重复项,代价是降低性能。换句话说,它执行UNION ALL,然后返回并删除重复的条目。

它应该提高你的查询性能

答案 3 :(得分:0)

(从this answer复制我的评论)

您可以从INFORMATION_SCHEMA获取表格的行数,如下所示(但请参阅下面的警告):

SELECT table_rows 
FROM information_schema.tables
WHERE table_schema = DATABASE() 
AND table_name IN ('table1', 'table2', 'table3');

然而MySQL documentation注意到InnoDb表的这些值 不精确:&#34;对于InnoDB表,行计数只是SQL优化中使用的粗略估计。 (如果InnoDB表是分区的,也是如此。)&#34;。如果您使用的是MyISAM,这种方法可能就足够了。