问题:统计shop_goods_sku表的数据条数?
方法一:mysql count(*) from shop_goods_sku;
方法二:mysql count(1) from shop_goods_sku;
方法三:mysql count(sku_id) from shop_goods_sku;
方法四:SHOW TABLE STATUS FROM databases_name LIKE 'shop_goods_sku';
方法五:SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='databases_name' AND TABLE_NAME='shop_goods_sku';
方法六:mysql sku_id from shop_goods_sku order by sku_id limit 1;
1.通常在mysql数据库,单表数据低于100W条,以上方法基本没有问题,可以大致得到解决。
2.单表数据大于100W时,方法(一、二、三)将会出现性能问题,数据库的所有压力全部给到数据,非常慢;方法(四、五、六)只能得到一个预估值,并不是精准数据。
问题:出现单表大数据时该如何处理呢?
我们会发现一个问题:sum使用的时候速度快,性能问题得到很大的提升,如果配合“索引”一起使用那这个效果还可以提升。那我们想一想有没有办法把count功能使用sum去替换呢?
答案是可以实现如下demo:
答案一:select sum(a.x) from (select if(sku_id > 0,1,0) as x from shop_goods_sku) as a;
答案二:select sum(case when sku_id > 0 then 1 else 0 end) from shop_goods_sku;
答案三:select sum(if(sku_id > 0,1,0)) from shop_goods_sku;
答案四:select sum(1) from shop_goods_sku;
各位大神还没有什么更好的办法可以实现,希望指导谢谢!