count(1),count(*)与 count(‘列名‘) 的区别

26 篇文章 0 订阅
订阅专栏

参考官方文档:
https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_count

COUNT(expr)

count的基本使用

  1. COUNT(NULL)返回0
  2. COUNT(*) 返回组中的项数。包括 NULL 值和重复项。
  3. COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。其中expression是除 text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。
mysql> SELECT count(*), count(1), count(c3) FROM t;
+----------+----------+-----------+
| count(*) | count(1) | count(c3) |
+----------+----------+-----------+
|        3 |        3 |         2 |
+----------+----------+-----------+
1 row in set (0.00 sec)

count(expr)返回SELECT语句检索到的行中expr的非NULL值的计数。结果是一个BIGINT值
COUNT(*)有点不同,因为它返回检索到的行数计数,无论它们是否包含NULL值。

区别如下:

  1. count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL的数据行;
  2. count(1)忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL的数据行;
  3. count(‘列名’)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是指空字符串或者0,而是表示NULL)的计数,即某个字段值为NULL时,不统计。

最终统计结果count(*)和count(1)是没有区别的,count(‘列名’)因为忽略了值为NULL的数据,所以可能比前两者统计的数量少;

性能对比

测试环境:windows mysql8.0.35,先不创建索引

DROP PROCEDURE IF EXISTS populate_test;
DELIMITER $$
CREATE PROCEDURE populate_test()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= 100000 DO
    	IF i % 3 = 0 THEN
    		INSERT INTO test VALUES (i, NULL);
        ELSEIF  i % 3 = 1 THEN
        	INSERT INTO test VALUES (i, CONCAT(@n, ''));
        ELSEIF i % 3 = 2 THEN
        	INSERT INTO test VALUES (i, 'this is text');
        END IF;
        SET i = i + 1;
    END WHILE;
END$$
DELIMITER ;

CALL populate_test();

count(*) VS count(1)

从执行计划可以看到:两者完全相同

mysql> EXPLAIN SELECT count(*) FROM test;
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows   | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
|  1 | SIMPLE      | test  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 100375 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
1 row in set, 1 warning (0.00 sec)

mysql> EXPLAIN SELECT count(1) FROM test;
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows   | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
|  1 | SIMPLE      | test  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 100375 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
1 row in set, 1 warning (0.00 sec)

再对比一下两者EXPLAIN ANALYZE的结果,也是差不多的

mysql> EXPLAIN ANALYZE SELECT count(*) FROM test\G;
*************************** 1. row ***************************
EXPLAIN: -> Count rows in test  (actual time=6.26..6.26 rows=1 loops=1)

1 row in set (0.01 sec)

mysql> EXPLAIN ANALYZE SELECT count(1) FROM test\G;
*************************** 1. row ***************************
EXPLAIN: -> Count rows in test  (actual time=6.21..6.21 rows=1 loops=1)

1 row in set (0.01 sec)

记得以前听到别人说在使用count的时候要用count(1)而不要用count(*),因为使用count(*)的时候会对所有的列进行扫描,相比而言count(1)不用扫描所有列,所以count(1)要快一些。其实这个是错误的。
下面是摘自官网的一段话: https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_count

InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.

两者其实没有性能差别,可以在执行EXPLAIN SELECT count(*) FROM test;之后通过SHOW WARNINGS;可以看到实际上count(*)就是count(0),如下所示:

mysql> EXPLAIN SELECT count(*) FROM test;
+----+-------------+-------+------------+-------+---------------+------+---------+------+--------+----------+-------------+
| id | select_type | table | partitions | type  | possible_keys | key  | key_len | ref  | rows   | filtered | Extra       |
+----+-------------+-------+------------+-------+---------------+------+---------+------+--------+----------+-------------+
|  1 | SIMPLE      | test  | NULL       | index | NULL          | b    | 403     | NULL | 100280 |   100.00 | Using index |
+----+-------------+-------+------------+-------+---------------+------+---------+------+--------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+-------+------+------------------------------------------------------------------------+
| Level | Code | Message                                                                |
+-------+------+------------------------------------------------------------------------+
| Note  | 1003 | /* select#1 */ select count(0) AS `count(*)` from `mysql_learn`.`test` |
+-------+------+------------------------------------------------------------------------+
1 row in set (0.00 sec)

SELECT COUNT(*) FROM tbl_name 这条sql的查询性能,对于InnoDB来说,会使用单线程进行查询如果没有WHERE或GROUP BY等额外子句存在,InnoDB表的查询性能将针对单线程工作负载进行优化。

count(*) VS count(列名)

COUNT(*) 不需要任何参数,而且不能与 DISTINCT 一起使用。
COUNT(*) 不需要 expression 参数,因为根据定义,该函数不使用有关任何特定列的信息。
COUNT(*) 返回指定表中行数而不删除副本。它对各行分别计数。包括包含空值的行。
也就是说count()只是返回表中行数,因此在处理count()的时候只需要找到属于表的数据块块头,然后计算一下行数就行了,而不用去读取里面数据列的数据。

而对于count(col)就不一样了,mysql必须读取该列的每一行的值,然后确认下是否为NULL,然后再进行计数。因此count(*)应该是比count(col)快的

从执行计划可看到,count(col)使用了全表扫描

mysql> EXPLAIN SELECT count(b) FROM test;
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows   | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
|  1 | SIMPLE      | test  | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 100375 |   100.00 | NULL  |
+----+-------------+-------+------------+------+---------------+------+---------+------+--------+----------+-------+
1 row in set, 1 warning (0.00 sec)

EXPLAIN ANALYZE的结果来看,两者的操作不同,count(col)多了一个Aggregate: count(test.b),花费时间不多,主要是全表扫描比较耗时

mysql> EXPLAIN ANALYZE SELECT count(*) FROM test\G;
*************************** 1. row ***************************
EXPLAIN: -> Count rows in test  (actual time=5.71..5.71 rows=1 loops=1)

mysql> EXPLAIN ANALYZE SELECT count(b) FROM test\G;
*************************** 1. row ***************************
EXPLAIN: -> Aggregate: count(test.b)  (cost=20131 rows=1) (actual time=93.8..93.8 rows=1 loops=1)
    -> Table scan on test  (cost=10094 rows=100375) (actual time=0.0303..81.9 rows=100000 loops=1)

count(*)会走索引吗

下面是摘自官网的一段话: https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html#function_count
InnoDB processes SELECT COUNT(*) statements by traversing the smallest available secondary index unless an index or optimizer hint directs the optimizer to use a different index. If a secondary index is not present, InnoDB processes SELECT COUNT(*) statements by scanning the clustered index.

还是以上面的test表为例,100000条数据,没有任何索引,所以是没有走索引的
在这里插入图片描述
此时添加主键索引,ALTER TABLE test ADD PRIMARY KEY (a);,可以看到使用了主键索引
在这里插入图片描述
现在再在列b上添加索引,ALTER TABLE test ADD INDEX (b);,可以看到没有使用主键索引,而是使用b辅助索引
在这里插入图片描述

这里这个最小可用的二级索引(the smallest available secondary index )怎么理解?
我们可以看到b在100000条数据中只有2种值(NULL和 this is text),所以对b列加索引,B+树只需要一个根节点即可,因此索引树是最小的。主键索引因为所有key都不同,所以索引树是最大的。

mysql> SELECT b FROM test GROUP BY b;
+--------------+
| b            |
+--------------+
| NULL         |
| this is text |
+--------------+
2 rows in set (0.00 sec)

所以默认会走 b 这个索引,也可以建议优化器走主键索引:SELECT count(*) FROM test FORCE INDEX(PRIMARY);,执行计划如下
在这里插入图片描述

MyISAM count优化

对于MyISAM表,COUNT(*)经过优化,如果SELECT从一个表中查询没有查询其他列,并且没有WHERE子句,则可以非常快速地返回。例如:SELECT COUNT(*) FROM student;。因为此存储引擎存储了精确的行数,并且可以非常快速地访问。此优化仅适用于MyISAM表,只有当第一列定义为NOT NULL时,COUNT(1)才会进行相同的优化。

CREATE TABLE `t_myisam` (
  `c1` int NOT NULL AUTO_INCREMENT,
  `c2` char(5) DEFAULT NULL,
  `c3` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`c1`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO t_myisam VALUES
(NULL, 'a', NULL), (NULL, 'b', '1'), (NULL, 'c', '2');

通过执行计划可以看到,table列是NULL,表明根本没有查表的数据

mysql> EXPLAIN SELECT count(*) FROM t_myisam;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                        |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+
|  1 | SIMPLE      | NULL  | NULL       | NULL | NULL          | NULL | NULL    | NULL | NULL |     NULL | Select tables optimized away |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------------------+
1 row in set, 1 warning (0.00 sec)

通过show warnings;可以看到实际上执行的是select count(0) AS count(*) from mysql_learn.t_myisam

mysql> show warnings;
+-------+------+----------------------------------------------------------------------------+
| Level | Code | Message                                                                    |
+-------+------+----------------------------------------------------------------------------+
| Note  | 1003 | /* select#1 */ select count(0) AS `count(*)` from `mysql_learn`.`t_myisam` |
+-------+------+----------------------------------------------------------------------------+
1 row in set (0.00 sec)

如果加上where条件就需要扫描表的数据才能得到count结果了

mysql> EXPLAIN SELECT count(*) FROM t_myisam WHERE c1 < 100;
+----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
| id | select_type | table    | partitions | type  | possible_keys | key     | key_len | ref  | rows | filtered | Extra                    |
+----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
|  1 | SIMPLE      | t_myisam | NULL       | index | PRIMARY       | PRIMARY | 4       | NULL |    3 |   100.00 | Using where; Using index |
+----+-------------+----------+------------+-------+---------------+---------+---------+------+------+----------+--------------------------+
1 row in set, 1 warning (0.00 sec)

InnoDB如何处理count(*)

对于InnoDB等事务存储引擎,存储精确的行数是有问题的,因为多个事务可能同时发生,每个交易都可能影响计数。InnoDB不会在表中保留行的内部计数,因为并发事务可能会同时看到不同数量的行。因此,SELECT COUNT(*)语句仅对当前事务可见的行进行计数。

InnoDB处理 SELECT COUNT(*)语句时,如果索引记录没有完全在Buffer Pool中,会花费一些时间。如果想要更快地计数,可以在自己的应用层维护一个计数表,让您的应用程序根据插入和删除操作来更新它。然而,在数千个并发事务正在启动对同一计数器表的更新的情况下,这种方法可能无法很好地扩展。如果近似行数足够,请使用SHOW TABLE STATUS。

总结

这里把上面实验的结果总结一下:

  1. count(*)和count(1)执行的效率是完全一样的。

  2. count(*)的执行效率比count(col)高,因此可以用count(*)的时候就不要去用count(col)。

  3. count(col)的执行效率比count(distinct col)高,不过这个结论的意义不大,这两种方法也是看需要去用。

  4. 如果是对特定的列做count的话建立这个列的非聚集索引能对count有很大的帮助。
    如果经常count(*)的话则可以找一个最小的col建立非聚集索引以避免全表扫描而影响整体性能。
    在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;
    但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;

查询count(1)、count(*)、count(列名) 详解
Gorden的博客
06-01 5968
count函数 1.count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 因为count(*),自动会优化指定到那一个字段。所以没必要去count(1),用...
SQL基础:如何透彻理解count(1)、count(*)和count列名)的区别
石榴姐yyds
09-02 3642
- 如果列为主键,count(列名)效率优于count(1) - 如果列不为主键,count(1)效率优于count(列名) - 如果表存在主键,count(主键列名)效率最优 - 如果表只有一列,则count(*)效率最优 - 如果表有多列,且不存在主键,则count(1)效率优于count(*)
count(1)、count(*)、count(列名)的含义、区别、执行效率
最新发布
qq_42720845的博客
06-24 3976
使用count函数,当要统计的数量比较大时,发现count(*)花费的时间比较多,相对来说count(1)花费的时间比较少。1、如果你的数据表没有主键,那么count(1)比count(*)快;如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快。2、如果你的表只有一个字段的话那count(*)就是最快的。3、如果count(1)是聚索引,id,那肯定是count(1)快,但是差的很小的。因为count(*),自动会优化指定到那一个字段。
count(*)和count(1)以及count(列名)的区别
bbrry的博客
02-28 1117
count(*)和count(1)以及count(列名)的区别
转载:count(*)和count(1)的区别
黄道婆的专栏
11-08 1645
原始链接:https://blog.csdn.net/weixin_43980049/article/details/89327782 count(*)和count(1)的区别是什么? weixin_439800492019-04-16 10:42:124682收藏10 分类专栏:sql文章标签:count(*)和count(1)的区别 版权 个人总结如下: 一、count(*)和count(1)查询速度 使用count函数,当要统计的数量比较大时,发现count(*)花...
count(1)、count(*)和count(指定字段)之间的区别
未来不可怕的博客
05-11 1万+
一、count(1)和count(*) 当表的数据量比较大,对表作分析之后,使用count(1)比使用count(*)用时多。 从执行计划看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count()的用时少些。 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 因为count(*),自动会优化指定到那一个字段。所以没必要去count(1),用count(*),sql会帮你完成优化,所以count(1)和count()基本没有
count(1)、count(*)与count(列名)的执行区别
qq_41853758的博客
12-11 4683
执行效果: 1.  count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!  从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。    如果count(1)是聚索引,id,那肯定是count...
count(1)、count(*)与count(列名)的执行区别详解
01-19
执行效果: 1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时...所以没必要去count(1),用count(*),sql会帮你完成优化的 因此: count(1)和count(*)基本没有差别!
为什么阿里巴巴禁止使用 count(列名)或 count(常量)来替代 count(*)1
08-03
`COUNT(常量)`,例如`COUNT(1)`,虽然在某些数据库系统与`COUNT(*)`的行为相似,但并不完全相同。它通常被视为一个非空表达式,因此与`COUNT(*)`一样,会计算所有行。然而,不是所有的数据库系统都会对`COUNT(常量...
MySql 执行count(1)、count(*) 与 count(列名) 区别
qq_31455841的博客
11-14 2078
返回语句检索的行的值不为NULL的数量。结果是一个值。如果查询结果没有命任何记录,则返回的统计结果,会包含值为的行数。除了和以外,还可以使用(如)来统计行数。
浅谈count(*)、count(1)、count(列名)
dixu7849的博客
11-02 509
count(*)和count(1)和count(列名)区别执行效果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULLcount(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULLcount(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某...
count(1) AND count(*) 对比
yuan_ren_sheng的博客
07-18 2万+
相信很多小伙伴都想知道count(1) 和 count(*) 的速度问题 ,今天我给大家做一下测试。我这里测试的是MySql数据库 声明:测试之前 我数据库表里面有100万条数据。我们先来测试count(*) 可以看出,count(*) 用时间差不多15秒,下面我们看一下count(1)   看到这我知道很多小伙伴还是找不到心里的答案,上面他可有一些客观原因。都是电脑重启后测...
count(1)与count(*)比较
liu552726的专栏
07-15 2888
count(1)与count(*)比较:       如果你的数据表没有主键,那么count(1)比count(*)快    如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快    如果你的表只有一个字段的话那count(*)就是最快的啦    count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。    如果coun
count(*)和count(1)的区别是什么?
weixin_43980049的博客
04-16 2万+
个人总结如下: 一、count(*)和count(1)查询速度 使用count函数,当要统计的数量比较大时,发现count(*)花费的时间比较多,相对来说count(1)花费的时间比较少。 1、如果你的数据表没有主键,那么count(1)比count(*)快 ;如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快 。 2、如果你的表只有一个字段的话那count(...
Oracle count(1) 和count(*) 的区别
热门推荐
12-28 12万+
count(1)与count(*)比较: 如果你的数据表没有主键,那么count(1)比count(*)快 如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快 如果你的表只有一个字段的话那count(*)就是最快的啦 count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。 如果count(1)是聚索引,id,
COUNT(1)和COUNT(*) 的区别
xintingandzhouyang的专栏
03-21 1万+
两者本质上没有任何区别。 参见MYSQL 参考手册 InnoDBhandlesSELECT COUNT(*)andSELECT COUNT(1)operations in the same way. There is no performance difference. 一、count情况 1、count(1):可以统计表所有数据,不统计所有的列,...
Select count(*)和Count(1)的区别和执行方式
weixin_33726943的博客
02-10 1874
    在SQL ServerCount(*)或者Count(1)或者Count([列])或许是最常用的聚合函数。很多人其实对这三者之间是区分不清的。本文会阐述这三者的作用,关系以及背后的原理。     往常我经常会看到一些所谓的优化建议不使用Count(* )而是使用Count(1),从而可以提升性能,给出的理由是Count( *)会带来全表扫描。而实际上如何写Count并没有区别。   ...
count(*)和count(1)和count列名)的区别
XVII 的博客
11-23 3万+
count是一种最简单的聚合函数,一般也是我们第一个开始学习的聚合函数,那么他们之间究竟由什么区别呢? 有的人说count(1)和count(*)他们之间有区别,而有的人说他们之间没有区别那么他们之间到底有没有区别呢。 从执行结果来说: count(1)和count(*)之间没有区别,因为count(*)count(1)都不会去过滤空值, 但count(列...
count(1)、count(*)与count(列名)区别
05-17
count(1)、count(*)和count(列名)都是用来统计行数的,但它们之间有一些区别。 - count(1)和count(*)是等价的,它们都会统计查询结果集的行数,包括NULL和重复值。 - count(列名)只会统计该列存在非NULL值的行数,不会统计NULL值和重复值。 因此,如果只是为了统计行数,使用count(1)或count(*)更为常见和推荐,而如果想要统计某一列非NULL值的数量,使用count(列名)更为合适。
写文章

热门文章

  • SpringBoot系列 启动流程 1195
  • Spring系列 AOP实现过程 1196
  • count(1),count(*)与 count(‘列名‘) 的区别 1180
  • OpenFeign 工作原理源码记录 1170
  • Spring系列 - 循环依赖 1138

分类专栏

  • Spring 8篇
  • MySQL 26篇
  • MQ 2篇
  • Java 6篇
  • Docker 2篇
  • SpringCloud 3篇
  • Golang 1篇
  • 软件安装 1篇

最新评论

  • SpringBoot系列 启动流程

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/619346280。

大家在看

  • 基于NRBO、CPO、TTAO、FVIM-CNN-LSSVM/CNN-LSSVM回归预测 5 模型一键对比 Matlab 391
  • 基于OpenMV与STM32的数据通信项目
  • 深度学习个人笔记
  • QFile 使用详解 174

最新文章

  • InnoDB自增处理
  • SQL优化 - Limit优化
  • Java并发 - AQS之CountDownLatch
2024
10月 25篇
09月 26篇
2022年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家济南商场美陈销售天水广场玻璃钢雕塑制作鹤壁不锈钢景观玻璃钢卡通雕塑宣城景区玻璃钢雕塑价格山东人物玻璃钢雕塑价格林州玻璃钢雕塑价格银川玻璃钢广场雕塑淮北动物玻璃钢雕塑多少钱新乡玻璃钢人物雕塑佛山玻璃钢伟人像雕塑福建秋季商场美陈哪家好杭州市德清商场美陈布置搭建公司合肥卡通玻璃钢雕塑厂家玻璃钢花盆生产模具商丘玻璃钢雕塑大象生产厂吉水玻璃钢雕塑厂家商场铺位门前美陈兰溪玻璃钢雕塑多少钱北京玻璃钢雕塑工厂珠海定制玻璃钢人物雕塑批发商场主题创意商业美陈价格玻璃钢动物牛雕塑品牌佛山港粤玻璃钢座椅雕塑溧阳商场美陈布展杭州玻璃钢雕塑定做价格玻璃钢雕塑背景长春市山东商场节庆美陈雕塑报价商场店面美陈布置图片玻璃钢小丑雕塑玻璃钢螃蟹雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化