楼主: hdydmichael

帮忙优化一条语句

[复制链接]
论坛徽章:
9
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51蛋疼蛋
日期:2011-08-09 14:26:55ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥迪
日期:2013-09-12 15:57:042014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2010-8-17 10:08 | 显示全部楼层

回复 #8 anlinew 的帖子

你这里加 is not null的含义什么

使用道具 举报

回复
论坛徽章:
2
2010新春纪念徽章
日期:2010-03-01 11:20:04ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
发表于 2010-8-17 10:36 | 显示全部楼层

回复 #11 tom_fans 的帖子

加is not null希望他的这条SQL改变执行计划filter而使用 hash join 来试下 逻辑读是否减少

使用道具 举报

回复
论坛徽章:
15
数据库板块每日发贴之星
日期:2008-06-30 01:01:54奥运会纪念徽章:羽毛球
日期:2012-06-26 15:21:24ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26数据库板块每日发贴之星
日期:2011-07-15 01:01:01ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010年世界杯参赛球队:加纳
日期:2010-07-27 08:59:132010年世界杯参赛球队:智利
日期:2010-07-14 16:06:302010年世界杯参赛球队:斯洛伐克
日期:2010-07-10 02:35:492010年世界杯参赛球队:英格兰
日期:2010-07-09 18:54:212010年世界杯参赛球队:瑞士
日期:2010-01-22 13:33:24
 楼主| 发表于 2010-8-17 10:57 | 显示全部楼层
原帖由 anlinew 于 2010-8-17 09:20 发表
SELECT *
  FROM eh_ladingbill
WHERE (nvl(dr, 0) = 0)
   and (nvl(dr, 0) = 0 and vbillstatus = 1 and pk_corp = '1031'
and billno is not null   
and
       billno not in (select billcode
                         from dap_finindex
                        where pk_corp = '1031'
                          and billcode is not null
                          and nvl(dr, 0) = 0))

或者

SELECT *
  FROM eh_ladingbill
WHERE (nvl(dr, 0) = 0)
   and (nvl(dr, 0) = 0 and vbillstatus = 1 and pk_corp = '1031'
and not exists(select 1
                         from dap_finindex
                        where
                          pk_corp = '1031'
                          and eh_ladingbill.billcode=dap_findex.billcode
                          and nvl(dr, 0) = 0))











不增加新的索引。
只按照你的意思,改用not exits后,
速度飞快。





Execution Plan
----------------------------------------------------------
Plan hash value: 662012624

----------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |                      |     1 |   772 |  3635   (1)| 00:00:44 |
|*  1 |  HASH JOIN RIGHT ANTI        |                      |     1 |   772 |  3635   (1)| 00:00:44 |
|*  2 |   TABLE ACCESS BY INDEX ROWID| DAP_FININDEX         |  7497 |   161K|  1627   (1)| 00:00:20 |
|*  3 |    INDEX SKIP SCAN           | I_DAP_INDEX          |  7901 |       |   842   (1)| 00:00:11 |
|*  4 |   TABLE ACCESS BY INDEX ROWID| EH_LADINGBILL        |  7552 |  5531K|  2007   (1)| 00:00:25 |
|*  5 |    INDEX RANGE SCAN          | INDX_LADINGBILL_CORP |  7815 |       |     9   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("EH"."BILLNO"="BILLCODE")
   2 - filter(NVL("DR",0)=0)
   3 - access("PK_CORP"='1031')
       filter("PK_CORP"='1031')
   4 - filter(NVL("DR",0)=0)
   5 - access("VBILLSTATUS"=1 AND "PK_CORP"='1031')


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
       9697  consistent gets
          0  physical reads
          0  redo size
     729469  bytes sent via SQL*Net to client
       3451  bytes received via SQL*Net from client
        285  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
       4253  rows processed

使用道具 举报

回复
论坛徽章:
47
2011新春纪念徽章
日期:2011-01-04 10:24:02奥迪
日期:2013-11-09 23:09:27保时捷
日期:2013-10-15 20:14:48阿斯顿马丁
日期:2013-10-12 09:11:59三菱
日期:2013-09-14 16:45:56雪铁龙
日期:2013-08-21 12:50:25马自达
日期:2013-08-14 12:51:35ITPUB社区千里马徽章
日期:2013-06-09 10:15:34蓝锆石
日期:2013-04-12 00:10:42劳斯莱斯
日期:2013-11-09 23:09:27
发表于 2010-8-17 11:26 | 显示全部楼层
写not in一般都是被人骂的,在结果集不是很大的情况下,和not exists效率差很多

使用道具 举报

回复
论坛徽章:
49
2010广州亚运会纪念徽章:台球
日期:2010-09-14 17:25:29ITPUB官方微博粉丝徽章
日期:2011-07-11 13:10:57ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-03-15 14:24:252012新春纪念徽章
日期:2012-01-04 11:53:54紫蛋头
日期:2012-03-07 10:09:01生肖徽章2007版:龙
日期:2012-03-07 10:13:00蜘蛛蛋
日期:2012-04-01 11:20:46奥运会纪念徽章:艺术体操
日期:2012-08-06 09:08:41奥运会纪念徽章:艺术体操
日期:2012-08-27 17:37:53
发表于 2010-8-17 11:48 | 显示全部楼层
not in上次导致了服务器资源90%以上!

改了not exists后资源就降到10%了!

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-8-17 12:01 | 显示全部楼层
原帖由 zhoujiongfield 于 2010-8-17 11:26 发表
写not in一般都是被人骂的,在结果集不是很大的情况下,和not exists效率差很多

10g之后,如果列有not null约束,走hash anti join没有差别的,如果没有not null约束,那就手动像前面一样加个not null也没有差别

使用道具 举报

回复
论坛徽章:
9
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51蛋疼蛋
日期:2011-08-09 14:26:55ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥迪
日期:2013-09-12 15:57:042014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2010-8-17 12:17 | 显示全部楼层

回复 #16 dingjun123 的帖子

你是说9I或者10G 如果列没有NOT NULL不能走HASH吗?  或者说有NULL的列不能走HASH JOIN?

这个我倒没注意。 不知道是不是这样。

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-8-17 12:22 | 显示全部楼层
hash_aj,merge_aj,nl_aj也和允许不允许null有很大关系,也可以通过加is not null条件让hint生效,这个不测试了,加上试试就可以了
--t.object_name和t1.object_name都允许或有一个允许null的情况下,最好用相关子查询,或者用外连接

--t.object_name和t1.object_name都有not null约束

DINGJUN123>select * from t where t.object_name not in (select object_name from t1);

已选择13204行。


执行计划
----------------------------------------------------------
Plan hash value: 4253491563

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  1 | HASH JOIN RIGHT ANTI|      | 12945 |  1289K|    63   (4)| 00:00:01 |
|   2 |   TABLE ACCESS FULL  | T1   |   999 | 14985 |     6   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL  | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("T"."OBJECT_NAME"="OBJECT_NAME")


统计信息
----------------------------------------------------------
        726  recursive calls
          0  db block gets
       1201  consistent gets
         13  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          8  sorts (memory)
          0  sorts (disk)
      13204  rows processed



--t.object_name或t1.object_name允许为null

DINGJUN123>select * from t where t.object_name not in (select object_name from t1);

已选择13204行。


执行计划
----------------------------------------------------------
Plan hash value: 1155274866

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      | 14214 |  1207K| 65236   (1)| 00:13:03 |
|*  1 | FILTER            |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL| T    | 14215 |  1207K|    56   (2)| 00:00:01 |
|*  3 |   TABLE ACCESS FULL| T1   |     1 |    15 |     6   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter( NOT EXISTS (SELECT /*+ */ 0 FROM "T1" "T1" WHERE
              LNNVL("OBJECT_NAME"<>:B1)))
   3 - filter(LNNVL("OBJECT_NAME"<>:B1))


统计信息
----------------------------------------------------------
        214  recursive calls
          0  db block gets
     180760  consistent gets
          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          4  sorts (memory)
          0  sorts (disk)
      13204  rows processed

--如果t1.object_name允许为null
DINGJUN123>select * from t where t.object_name not in (select object_name from t1 where t1.object_name is not null);

已选择13204行。


执行计划
----------------------------------------------------------
Plan hash value: 4253491563

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  1 |  HASH JOIN RIGHT ANTI|      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  2 |   TABLE ACCESS FULL  | T1   |   999 | 14985 |     6   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL  | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("T"."OBJECT_NAME"="OBJECT_NAME")
   2 - filter("T1"."OBJECT_NAME" IS NOT NULL)


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1071  consistent gets

          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      13204  rows processed

--如果t.object_name允许为null,上面的不凑效
DINGJUN123>select * from t where t.object_name not in (select object_name from t1 where t1.object_name is not null);

已选择13204行。


执行计划
----------------------------------------------------------
Plan hash value: 1155274866

---------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      | 14214 |  1207K| 65236   (1)| 00:13:03 |
|*  1 |  FILTER            |      |       |       |            |          |
|   2 |   TABLE ACCESS FULL| T    | 14215 |  1207K|    56   (2)| 00:00:01 |
|*  3 |   TABLE ACCESS FULL| T1   |     1 |    15 |     6   (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter( NOT EXISTS (SELECT /*+ */ 0 FROM "T1" "T1" WHERE
              LNNVL("OBJECT_NAME"<>:B1)))
   3 - filter(LNNVL("OBJECT_NAME"<>:B1))


统计信息
----------------------------------------------------------
        412  recursive calls
          0  db block gets
    180802  consistent gets
          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          8  sorts (memory)
          0  sorts (disk)
      13204  rows processed


--t.object_name允许null
DINGJUN123>select * from t where  t.object_name is not null and t.object_name not in (select object_name from t1) ;

已选择13204行。


执行计划
----------------------------------------------------------
Plan hash value: 4253491563

-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  1 |  HASH JOIN RIGHT ANTI|      | 12945 |  1289K|    63   (4)| 00:00:01 |
|   2 |   TABLE ACCESS FULL  | T1   |   999 | 14985 |     6   (0)| 00:00:01 |
|*  3 |   TABLE ACCESS FULL  | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("T"."OBJECT_NAME"="OBJECT_NAME")
   3 - filter("T"."OBJECT_NAME" IS NOT NULL)


统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1071  consistent gets
          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      13204  rows processed


--t.object_name与t1.object_name都允许为null
DINGJUN123>select * from t where t.object_name not in (select object_name from t1 where t1.object_name is not null)
  2  and t.object_name is not null;
已选择13204行。

执行计划
----------------------------------------------------------
Plan hash value: 4253491563
-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  1 |  HASH JOIN RIGHT ANTI|      | 12945 |  1289K|    63   (4)| 00:00:01 |
|   2 |   TABLE ACCESS FULL  | T1   |   999 | 14985 |     6   (0)| 00:00:01 |
|*  3 |   TABLE ACCESS FULL  | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("T"."OBJECT_NAME"="OBJECT_NAME")
   3 - filter("T"."OBJECT_NAME" IS NOT NULL)

统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
       1071  consistent gets
          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      13204  rows processed


--用not exists没有这问题
DINGJUN123>select * from t where not exists (select 1 from t1 where t1.object_name=t.object_name);
已选择13204行。

执行计划
----------------------------------------------------------
Plan hash value: 4253491563
-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  1 |  HASH JOIN RIGHT ANTI|      | 12945 |  1289K|    63   (4)| 00:00:01 |
|   2 |   TABLE ACCESS FULL  | T1   |   999 | 14985 |     6   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL  | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("T1"."OBJECT_NAME"="T"."OBJECT_NAME")

统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1071  consistent gets
          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      13204  rows processed

--如果t1.object_name为null,关联查询也能避免filter,其他的类似

DINGJUN123>select * from t where t.object_name not in (select t1.object_name from t1 where t1.object_name=t.object_name);
已选择13204行。

执行计划
----------------------------------------------------------
Plan hash value: 4253491563
-----------------------------------------------------------------------------
| Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |      | 12945 |  1289K|    63   (4)| 00:00:01 |
|*  1 |  HASH JOIN RIGHT ANTI|      | 12945 |  1289K|    63   (4)| 00:00:01 |
|   2 |   TABLE ACCESS FULL  | T1   |   999 | 14985 |     6   (0)| 00:00:01 |
|   3 |   TABLE ACCESS FULL  | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("T1"."OBJECT_NAME"="T"."OBJECT_NAME")

统计信息
----------------------------------------------------------
        223  recursive calls
          0  db block gets
       1113  consistent gets
          0  physical reads
          0  redo size
     700038  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          4  sorts (memory)
          0  sorts (disk)
      13204  rows processed


--不管是否允许null,外连接常可以代替not exists
DINGJUN123>select * from t,t1 where t.object_name=t1.object_name(+) and t1.object_name is null;
已选择13204行。

执行计划
----------------------------------------------------------
Plan hash value: 2397929784
-------------------------------------------------------------------------------
| Id  | Operation              | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |      | 14215 |  2304K|    63   (4)| 00:00:01 |
|*  1 |  FILTER                |      |       |       |            |          |
|*  2 |   HASH JOIN RIGHT OUTER|      | 14215 |  2304K|    63   (4)| 00:00:01 |
|   3 |    TABLE ACCESS FULL   | T1   |   999 | 78921 |     6   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL   | T    | 14215 |  1207K|    56   (2)| 00:00:01 |
-------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("T1"."OBJECT_NAME" IS NULL)
   2 - access("T"."OBJECT_NAME"="T1"."OBJECT_NAME"(+))

统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1071  consistent gets
          0  physical reads
          0  redo size
     727233  bytes sent via SQL*Net to client
      10064  bytes received via SQL*Net from client
        882  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      13204  rows processed
DINGJUN123>
DINGJUN123>


[ 本帖最后由 dingjun123 于 2010-8-17 12:25 编辑 ]

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2010-8-17 12:27 | 显示全部楼层
这个例子比较好,告诉我们,not null约束该定义的还是要定义,少了这个约束可能会造成很多问题

使用道具 举报

回复
论坛徽章:
9
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51蛋疼蛋
日期:2011-08-09 14:26:55ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥迪
日期:2013-09-12 15:57:042014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2010-8-17 12:30 | 显示全部楼层
我不明白为什么 NULL就不能走? 这绝对是BUG。

你解释下为什么NULL不能走? 从原理上难道HASH算法行不通?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表