leading(a,b,c,d) use_hash(a,b,c,d) swap_join_inputs(c) no_swap_join_inputs(d)
其执行计划结果类似如下:
hash join
hash_join
c
hash_join
a
b
d
nested loops
nested loops
b
a
c
select /*+ ordered use_nl(t3 x) */ *
from t3,
(select /*+ no_merge use_nl(t1, t2) */
t1.object_id, t1.owner, t1.object_name
from t1,t2
where t1.object_id=t2.object_id) X
where x.object_name=t3.object_name;
-------------------------------
| Operation | Name |
-------------------------------
| SELECT STATEMENT | |
| NESTED LOOPS | |
| TABLE ACCESS FULL | T3 |
| VIEW | |
| NESTED LOOPS | |
| TABLE ACCESS FULL| T1 |
| TABLE ACCESS FULL| T2 |
-------------------------------
DROP TABLE a;
DROP TABLE b;
DROP TABLE c;
DROP TABLE d;
CREATE TABLE a AS SELECT * FROM All_Objects;
CREATE TABLE b AS SELECT * FROM All_Objects WHERE ROWNUM<100;
CREATE TABLE c AS SELECT * FROM All_Objects WHERE ROWNUM<200;
CREATE TABLE d AS SELECT * FROM all_objects WHERE ROWNUM<10;
BEGIN
dbms_stats.gather_table_stats(ownname => USER,tabname => a,cascade => TRUE);
dbms_stats.gather_table_stats(ownname => USER,tabname => b,cascade => TRUE);
dbms_stats.gather_table_stats(ownname => USER,tabname => c,cascade => TRUE);
dbms_stats.gather_table_stats(ownname => USER,tabname => d,cascade => TRUE);
END;
/
SELECT * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
SELECT/*+leading(a,c,d,b) use_hash(a,b,c,d) no_swap_join_inputs(b) no_swap_join_inputs(d) */ * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
----------------------------------------------------------
Plan hash value: 2471173529
-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 74150 | 22M| | 2265 (1)| 00:00:28 |
|* 1 | HASH JOIN OUTER | | 74150 | 22M| 18M| 2265 (1)| 00:00:28 |
|* 2 | HASH JOIN OUTER | | 74150 | 17M| 13M| 1343 (1)| 00:00:17 |
|* 3 | HASH JOIN OUTER | | 74150 | 12M| 7896K| 685 (1)| 00:00:09 |
| 4 | TABLE ACCESS FULL| A | 74150 | 7023K| | 296 (1)| 00:00:04 |
| 5 | TABLE ACCESS FULL| C | 199 | 15323 | | 3 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | D | 9 | 675 | | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | B | 99 | 7425 | | 3 (0)| 00:00:01 |
-------------------------------------------------------------------------------------
SELECT/*+leading(a,c,d,b) use_hash(a,b,c,d) swap_join_inputs(b) swap_join_inputs(d) */ * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 74150 | 22M| | 693 (1)| 00:00:09 |
|* 1 | HASH JOIN RIGHT OUTER | | 74150 | 22M| | 693 (1)| 00:00:09 |
| 2 | TABLE ACCESS FULL | B | 99 | 7425 | | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER| | 74150 | 17M| | 689 (1)| 00:00:09 |
| 4 | TABLE ACCESS FULL | D | 9 | 675 | | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN OUTER | | 74150 | 12M| 7896K| 685 (1)| 00:00:09 |
| 6 | TABLE ACCESS FULL | A | 74150 | 7023K| | 296 (1)| 00:00:04 |
| 7 | TABLE ACCESS FULL | C | 199 | 15323 | | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
SELECT/*+ordered use_hash(c) swap_join_inputs(c)*/ COUNT(*) FROM
b,c,a,d
WHERE a.object_id=b.object_id(+)
AND b.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 348719292
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 15 | 306 (2)| 00:00:04 |
| 1 | SORT AGGREGATE | | 1 | 15 | | |
|* 2 | HASH JOIN RIGHT OUTER | | 73811 | 1081K| 306 (2)| 00:00:04 |
| 3 | TABLE ACCESS FULL | D | 9 | 27 | 3 (0)| 00:00:01 |
|* 4 | HASH JOIN RIGHT OUTER| | 73811 | 864K| 302 (1)| 00:00:04 |
| 5 | TABLE ACCESS FULL | C | 199 | 796 | 3 (0)| 00:00:01 |
|* 6 | HASH JOIN OUTER | | 73811 | 576K| 298 (1)| 00:00:04 |
| 7 | TABLE ACCESS FULL | A | 73811 | 360K| 294 (1)| 00:00:04 |
| 8 | TABLE ACCESS FULL | B | 99 | 297 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
4 - access("B"."OBJECT_ID"="C"."OBJECT_ID"(+))
6 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
dingjun123@ORADB> select count(*) from a;
COUNT(*)
----------
74277
已选择 1 行。
已用时间: 00: 00: 00.01
dingjun123@ORADB> select count(*) from b;
COUNT(*)
----------
99
已选择 1 行。
已用时间: 00: 00: 00.00
dingjun123@ORADB> select count(*) from c;
COUNT(*)
----------
199
已选择 1 行。
已用时间: 00: 00: 00.01
dingjun123@ORADB> select count(*) from d;
COUNT(*)
----------
9
已选择 1 行。
已用时间: 00: 00: 00.01
dingjun123@ORADB> set autotrace traceonly exp
dingjun123@ORADB> SELECT * FROM
2 a,b,c,d
3 WHERE a.object_id=b.object_id(+)
4 AND a.object_id=c.object_id(+)
5 AND a.object_id=d.object_id(+);
已用时间: 00: 00: 00.00
执行计划
Plan hash value: 2669012812
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| 306 (2)| 00:00:04 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| 306 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL | C | 199 | 15522 | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER | | 73811 | 17M| 303 (2)| 00:00:04 |
| 4 | TABLE ACCESS FULL | B | 99 | 7425 | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN RIGHT OUTER| | 73811 | 12M| 299 (2)| 00:00:04 |
| 6 | TABLE ACCESS FULL | D | 9 | 675 | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | A | 73811 | 6991K| 295 (1)| 00:00:04 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
SELECT/*+ leading(a) use_hash(c) swap_join_inputs(c) use_hash(c) use_hash(d) */ * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 136456331
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| 306 (2)| 00:00:04 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| 306 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL | B | 99 | 7425 | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER | | 73811 | 17M| 303 (2)| 00:00:04 |
| 4 | TABLE ACCESS FULL | D | 9 | 675 | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN RIGHT OUTER| | 73811 | 12M| 299 (2)| 00:00:04 |
| 6 | TABLE ACCESS FULL | C | 199 | 15522 | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | A | 73811 | 6991K| 295 (1)| 00:00:04 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
SELECT/*+ ordered use_hash(c) swap_join_inputs(c) use_hash(b) no_swap_join_inputs(b) use_hash(d) */ * FROM
a,c,b,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 2249876107
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| | 961 (1)| 00:00:12 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| | 961 (1)| 00:00:12 |
| 2 | TABLE ACCESS FULL | D | 9 | 675 | | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN OUTER | | 73811 | 17M| 13M| 957 (1)| 00:00:12 |
|* 4 | HASH JOIN RIGHT OUTER| | 73811 | 12M| | 299 (2)| 00:00:04 |
| 5 | TABLE ACCESS FULL | C | 199 | 15522 | | 3 (0)| 00:00:01 |
| 6 | TABLE ACCESS FULL | A | 73811 | 6991K| | 295 (1)| 00:00:04 |
| 7 | TABLE ACCESS FULL | B | 99 | 7425 | | 3 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
4 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
SELECT/*+ ordered use_hash(c) swap_join_inputs(c) use_hash(b) no_swap_join_inputs(b) use_hash(d) no_swap_join_inputs(d)*/ * FROM
a,c,b,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 3863684830
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| | 1877 (1)| 00:00:23 |
|* 1 | HASH JOIN OUTER | | 73811 | 22M| 18M| 1877 (1)| 00:00:23 |
|* 2 | HASH JOIN OUTER | | 73811 | 17M| 13M| 957 (1)| 00:00:12 |
|* 3 | HASH JOIN RIGHT OUTER| | 73811 | 12M| | 299 (2)| 00:00:04 |
| 4 | TABLE ACCESS FULL | C | 199 | 15522 | | 3 (0)| 00:00:01 |
| 5 | TABLE ACCESS FULL | A | 73811 | 6991K| | 295 (1)| 00:00:04 |
| 6 | TABLE ACCESS FULL | B | 99 | 7425 | | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | D | 9 | 675 | | 3 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
2 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
SELECT/*+ ordered use_hash(c) swap_join_inputs(c) use_hash(b) use_hash(d) */ * FROM
a,c,b,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 1239593472
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| 306 (2)| 00:00:04 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| 306 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL | D | 9 | 675 | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER | | 73811 | 17M| 303 (2)| 00:00:04 |
| 4 | TABLE ACCESS FULL | B | 99 | 7425 | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN RIGHT OUTER| | 73811 | 12M| 299 (2)| 00:00:04 |
| 6 | TABLE ACCESS FULL | C | 199 | 15522 | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | A | 73811 | 6991K| 295 (1)| 00:00:04 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
SELECT/*+ ordered use_hash(b) swap_join_inputs(b) use_hash(c)
swap_join_inputs(c) use_hash(d) swap_join_inputs(d)*/ * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
其执行计划是:
Execution Plan
----------------------------------------------------------
Plan hash value: 1261491594
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| 306 (2)| 00:00:04 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| 306 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL | D | 9 | 675 | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER | | 73811 | 17M| 303 (2)| 00:00:04 |
| 4 | TABLE ACCESS FULL | C | 199 | 15522 | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN RIGHT OUTER| | 73811 | 12M| 299 (2)| 00:00:04 |
| 6 | TABLE ACCESS FULL | B | 99 | 7425 | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | A | 73811 | 6991K| 295 (1)| 00:00:04 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
SELECT/*+ ordered */ * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 4024647441
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| | 689 (1)| 00:00:09 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| | 689 (1)| 00:00:09 |
| 2 | TABLE ACCESS FULL | D | 9 | 675 | | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER| | 73811 | 17M| | 685 (1)| 00:00:09 |
| 4 | TABLE ACCESS FULL | C | 199 | 15522 | | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN OUTER | | 73811 | 12M| 7864K| 681 (1)| 00:00:09 |
| 6 | TABLE ACCESS FULL | A | 73811 | 6991K| | 295 (1)| 00:00:04 |
| 7 | TABLE ACCESS FULL | B | 99 | 7425 | | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
SELECT/*+ leading(a) use_hash(d) swap_join_inputs(d)*/ * FROM
a,b,c,d
WHERE a.object_id=b.object_id(+)
AND a.object_id=c.object_id(+)
AND a.object_id=d.object_id(+);
Execution Plan
----------------------------------------------------------
Plan hash value: 2669012812
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| 306 (2)| 00:00:04 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| 306 (2)| 00:00:04 |
| 2 | TABLE ACCESS FULL | C | 199 | 15522 | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER | | 73811 | 17M| 303 (2)| 00:00:04 |
| 4 | TABLE ACCESS FULL | B | 99 | 7425 | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN RIGHT OUTER| | 73811 | 12M| 299 (2)| 00:00:04 |
| 6 | TABLE ACCESS FULL | D | 9 | 675 | 3 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | A | 73811 | 6991K| 295 (1)| 00:00:04 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
dingjun123@ORADB> SELECT/*+ leading(b,a,c,d) use_hash(a,c,d) swap_join_inputs(a)*/ * FROM
2 a,b,c,d
3 WHERE a.object_id=b.object_id(+)
4 AND a.object_id=c.object_id(+)
5 AND a.object_id=d.object_id(+);
Elapsed: 00:00:00.00
Execution Plan
----------------------------------------------------------
Plan hash value: 1247046137
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 73811 | 22M| | 689 (1)| 00:00:09 |
|* 1 | HASH JOIN RIGHT OUTER | | 73811 | 22M| | 689 (1)| 00:00:09 |
| 2 | TABLE ACCESS FULL | B | 99 | 7425 | | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN RIGHT OUTER| | 73811 | 17M| | 685 (1)| 00:00:09 |
| 4 | TABLE ACCESS FULL | D | 9 | 675 | | 3 (0)| 00:00:01 |
|* 5 | HASH JOIN OUTER | | 73811 | 12M| 7864K| 681 (1)| 00:00:09 |
| 6 | TABLE ACCESS FULL | A | 73811 | 6991K| | 295 (1)| 00:00:04 |
| 7 | TABLE ACCESS FULL | C | 199 | 15522 | | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("A"."OBJECT_ID"="B"."OBJECT_ID"(+))
3 - access("A"."OBJECT_ID"="D"."OBJECT_ID"(+))
5 - access("A"."OBJECT_ID"="C"."OBJECT_ID"(+))
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129287.html
摘要:引导优化器按照哈希扫描的方式从表中读取数据。告诉优化器强制选择位图索引。这个提示会使优化器合并表上的多个位图索引,而不是选择其中最好的索引这是提示的用途。还可以使用指定单个索引对于指定位图索引,该提示优先于提示。 一、提示(Hint)概述 1、为什么引入Hint? Hint是Oracle数据库中很有特色的一个功能,是很多DBA优化中经常采用的一个手段。那为什么Oracle会考虑引入优化...
摘要:前言用过做过开发的同学多少都对的有所了解和使用的经验也都知道有等至于的基本概念我想大家也都清楚这里也就不再赘述今天在论坛里看到了一个问题谈到了的执行顺序的问题看到问题以后突然发现自己对这方面的理解也不是十分的深入在回答问题的同时正好对这个知 前言 用过Spring做过开发的同学,多少都对Spring的AOP有所了解和使用的经验.也都知道有@Around,@Before,@After等A...
摘要:首先我们定义一个有两个不同控制器的然后,我们创建一个特定的工厂接口来创建新的对象不需要手动的去继承实现该工厂接口,我们只需要将控制器的引用传递给该接口对象就好了的控制器会自动选择合适的构造器方法。这种指向时间轴的对象即是类。 本文为翻译文章,原文地址 这里 欢迎来到本人对于Java 8的系列介绍教程,本教程会引导你一步步领略最新的语法特性。通过一些简单的代码示例你即可以学到默认的接口方...
阅读 1249·2023-01-11 13:20
阅读 1558·2023-01-11 13:20
阅读 1012·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3971·2023-01-11 13:20
阅读 2519·2023-01-11 13:20
阅读 1355·2023-01-11 13:20
阅读 3486·2023-01-11 13:20