SQL优化-优化器

1.优化器

定义优化器(optimizer)是oracle数据库内置的一个核心子系统。优化器的目的是按照一定的判断原则来得到它认为的目标SQL在当前的情形下的最高效的执行路径,也就是为了得到目标SQL的最佳执行计划。依据所选择执行计划时所用的判断原则,oracle数据库里的优化器又分为RBO(基于原则的优化器)和CBO(基于成本的优化器,SQL的成本根据统计信息算出)两种。

ORACLE数据库SQL语句的执行过程

分类:Oracle数据库中的优化器分为RBO和CBO

RBO:基于规则的优化器

RBO是一种适合于OLTP类型SQL语句的优化器。相对于CBO而言,RBO有着先天的缺陷,一旦SQL语句的执行计划出现问题,将很难调整。RBO最大的缺点是以oracle内置代码的规则作为判断标准,而并没有考虑到实际目标表的数据量以及数据分布情况。

CBO:基于成本的优化器

CBO优化器根据SQL语句生成一组可能被使用的执行计划,估算出每个执行计划的代价,并调用计划生成器(Plan Generator)生成执行计划,比较执行计划的代价,最终选择选择一个代价最小的执行计划。查询优化器由查询转换器(Query Transform)、代价估算器(Estimator)和计划生成器(Plan Generator)组成。

oracle在未引入系统统计信息之前,CBO所计算的成本值实际全是基于IO计算的。

比较:CBO优于RBO是因为RBO是一种呆板、过时的优化器,它只认规则,对数据不敏感。毕竟规则是死的,数据是变化的,这样生成的执行计划往往是不可靠的,不是最优的。

2.CBO优化器的基本概念

2.1 集的势(cardinality)

Cardinality是CBO特有的概念,指集合所包含的记录数,即结果集行数。Cardinality实际上表示对目标SQL某个具体执行步骤的执行结果所包含的记录数的估算,当然,如果针对整个目标SQL,那么此时的cardinality就表示对该SQL最终执行结果所包含的记录数的估算。Cardinality和成本值得估算息息相关,因为oracle得到的制定结果集所需要消耗的IO资源可以近似的看成随着结果集所包含的记录数递增而递增。所以,SQL编写的一个原则就是“尽早的过滤更多的数据”。

2.2 可选择率(Selectivity)

Selectivity也是CBO特有的概念,它是指“施加指定谓语条件后返回的结果集的记录数占未施加任何谓语条件的原始结果集的记录数的比率”,取值范围为0~1,其值越小,代表可选择性越好。Selectivity也可成本值得估算息息相关,可选择率越大,意味着所返回的结果集的cardinality越大,所以估算的成本就越大。实际上CBO就是利用selectivity来计算对应结果集的cardinality的,即:

Computed cardinality=original*selectivity

Cardinility和selectivity的值会直接影响CBO对于相关执行步骤成本的估算,进而影响CBO对于目标SQL的执行计划的选择。

可用以下公式老表示:

Selectivity=施加指定谓语条件后返回的结果集的记录数/未施加任何谓语条件的原始结果集的记录数

Selectivity = 1/num_distinct

2.3 可传递性

可传递性也是CBO的特有属性,它是查询转换中所做的第一件事情,其含义是CBO会对目标SQL做等价改写,进而提供更多的执行路径给目标CBO,增加得到最佳执行计划的可能性。RBO不会对目标SQL做等价改写。Oracle里可传递性分为以下3种情况:

1)简单谓语传递

比如原目标SQL中的谓语条件是“t1.c1=t2.c1 and t1.c1=10”,则CBO可能会给谓语条件额外加上“t2.c1=10”。

2)连接谓语传递

比如原目标SQL中的谓语条件是“t1.c1=t2.c1 and t2.c1=t3.c1”,则CBO可能会给谓语条件额外加上“t1.c1=t3.c1”。

3)外链接谓语传递

比如原目标SQL中的谓语条件是“t1.c1=t2.c1(+) and t1.c1=10”,则CBO可能会给谓语条件额外加上“t2.c1(+)=10”。

2.4 CBO的局限性

1)CBO会默认目标SQL语句where条件中出现的各个列之间出现是独立的,没有任何关联。并且CBO会根据这个前提条件来计算selectivity和cardinality,进而估算成本并选择执行计划。

2)CBO会假设所有的目标SQL都是独立运行的,并且互不干扰,但实际情况却不完全是这样。

3)CBO在解析多表关联的目标SQL时,可能会漏选正确的执行计划

3.优化器基础知识

3.1 优化器的模式

优化器模式用于决定oracle在解析目标SQL时所选择的优化器类型,以及选择使用CBO时计算成本的侧重点。在oracle数据库中,优化器模式由参数OPTIMIZER_MODE的值决定,通常OPTIMIZER_MODE的值为RULE,CHOOSE,FIRST_ROWS_n(N=1、10、100、1000),FIRST_ROWS或ALL_ROWS。OPTIMIZER_MODE的值得各个含义如下:

1)RULE:RULE表示优化器使用RBO来解析目标SQL,此时目标SQL所涉及的各个对象的统计信息对于RBO来说将毫无意义。

2)CHOOSE:CHOOSE是oracle 9i中OPTIMIZER_MODE的默认值,他表示oracle在解析目标SQL时到底使用CBO还是RBO取决于目标SQL所涉及对象是否有统计信息。

3)FIRST_ROWS_n(N=1、10、100、1000)

4)FIRST_ROWS:FIRST_ROWS是一个在oracle 9i中就过时的一个参数,他表示oracle在解析目标SQL时会联合使用CBO和RBO。在大部分情况下,oracle还是会选用CBO作为解析目标SQL,此时oracle的侧重点是以最快的相应速度返回前n行。在一些特俗情况下,oracle会选用RBO来解析目标SQL而不考虑成本。

5)ALL_ROWS:ALL_ROWS是oracle 10g及以后oracle的版本中OPTIMIZER_MODE的默认值,它表示oracle会使用CBO来解析目标SQL,此时CBO计算目标SQL的各个执行路径的成本的侧重点是最佳吞吐量。当OPTIMIZER_MODE为FIRST_ROWS时,CBO计算成本侧重于最快响应时间;当OPTIMIZER_MODE为ALL_ROWS时,CBO计算成本侧重于最佳吞吐量。

3.2 结果集(row source)

结果集是指包含指定执行结果的集合。对于优化器而言,结果集对应SQL执行计划的执行步骤。执行计划的各个步骤的输出结果集和输入结果集可以通过执行计划分析出。

3.3 访问数据的方法

优化器访问数据的方法有3种,一种是直接访问表;一种是访问索引,直接从索引中取值;另一种是先访问索引,再回表。

3.3.1 访问表的方法

访问表的方法2种:全表扫描;rowid扫描。

(1)全表扫描

全表扫面会从表所占用的第一个extent的第一个块开始扫描,一直到该表的最高水位线为止,这个范围的所有的数据块,oracle都会读到。

(2)rowid访问

Rowid访问是指oracle在访问目标表的数据时,直接通过数据所在的rowid去定位并访问这些数据。Oracle中rowid访问有两层含义:一是根据用户SQL输入的rowid值直接去读取数据记录;另一种是先去访问相关索引,然后根据访问索引所返回的rowid回表去读取具体的记录数。

对于oracle数据库中的堆表,可以通过oracle内置的rowid伪列得到对应的rowid值,然后我们可以通过dbms_rowid包中的相关方法(dbms_rowid.rowid_relative_fno:文件号;dbms_rowid.rowid_block_number:数据块号;dbms_rowid.rowid_row_number:数据块中行号)通过上述取得的rowid值取得数据行的实际物理位置。例:

SQL> select empno,ename,rowid, dbms_rowid.rowid_relative_fno(rowid)

||'_'||dbms_rowid.rowid_block_number(rowid)||'_'||dbms_rowid.rowid_row_number(rowid) localtion

     from emp;

    EMPNO    ENAME       ROWID                        LOCALTION

---------- ------------------------------ -------------------------------------------------- ----------------------------

########## SMITH     AAAMfMAAEAAAAAgAAA             4_32_0

..............

########## MILLER    AAAMfMAAEAAAAAgAAN             4_32_13

14 rows selected.

3.3.2 访问索引的方法

使用B-TREE索引的优势有以下几点:

a、所有的叶子快都在同一层,即所有的叶子块距离根节点的距离是相同的。

b、Oracle保证所有的B-tree索引都是自平衡的,即不可能出现不同的索引叶子块不处于同一层的情况。

c、通过B-tree索引访问数据不会因为表数据量的增加效率明显降低,这也是走索引与全表扫描最大的区别。

(1)索引唯一性扫描

索引唯一性扫描(index unique scan)是针对唯一性索引(unique index)的扫描。它仅仅适用于where条件是等值查询的目标SQL。

(2)索引范围扫描

索引范围扫描(index range scan)适用于所有的B-tree索引,当扫描的对象是唯一性索引时,此时目标SQL的where条件一定是范围条件,当扫描的对象是非唯一性索引时,此时目标SQL的where条件没有限制。

(3)索引全扫描

索引全扫描(index full scan)适用于所有类型的B-tree索引(唯一性索引和非唯一性索引),所谓索引全扫描是指要扫描索引的所有叶子块的所有行。

(4)索引快速扫描

索引快速扫描(index fast full scan)适用于所有类型的B-tree索引(唯一性索引和非唯一性索引),索引快速扫描要扫描索引的所有叶子块的所有行。索引快速扫描与索引全扫描有以下区别:

#索引快速扫描仅仅适用于CBO。

#索引快速扫描可以使用多块读,同时也可以并行执行。

#索引快速扫描的结果不一定是有序的。

(5)索引跳跃式扫描

索引跳跃式扫描(index skip scan)适用于所有复合类型的B-tree索引(包括唯一性索引与非唯一性索引)。

3.3.3 表连接

通常情况下,我们可以人为Oracle的表连接分为内连接和外连接两种连接方式。

3.3.3.1 表连接类型

(a)内连接(inner join)

内连接是指表连接的连接结果只包含那些完全满足连接条件的记录。对于SQL而言,只要其where条件中没有定义那些外连接关键字(如left outer join、right outer join、full outer join)外的所有连接类型定义为内连接。

(b)外连接(outer join)

外连接是对内连接的一种扩展,它是指表连接的结果除了包括那些满足条件的连接结果外还包含驱动表中不满足连接条件的结果。标准SQL的外连接分为左连接(left outer join)、右连接(righr outer join)、全连接(full outer join)三种。全连接可以近似看成是先做左连接union再做右连接,这里所说的近似是因为oracle实际的处理并不是这样做的,因为union要对结果集进行排序,而全连接并不需要排序。

3.3.3.2 表连接方法

优化器在解析含有表连接的目标SQL时,当根据目标SQL的SQL文本决定了表的连接类型后,接下来还要决定表的连接方法。Oracle中两表的连接方法有“排序合并”,“嵌套循环”,“哈希连接”,“笛卡尔连接”四种。

(a)排序合并连接(sort merge join)

排序合并连接是一种两表做表连接时用排序操作(sort)和合并操作(merge)来得到表连接结果的方法。

排序合并连接的适用场景总结入下:

b.1)通常情况下,排序合并连接的执行效率不如哈希连接,但是前者使用范围广,因为hash连接只适用于等值连接,而排序合并还适用于其他连接(比如<、>、<=、>=)。

b.2)通常情况下,排序合并不适合OLTP类型连接,本质是排序对于OLTP类型来说成本是昂贵的。但是,如果能避免排序,也是可以适合于OLTP系统的。

(b)嵌套循环连接(nested loops join)

嵌套循环连接是两个表在做连接时采用两层嵌套循环(外层循环和内层循环)的方式来得到表连接结果的方法。

嵌套循环连接的适用场景总结入下:

b.1)如果驱动表所对应的驱动结果集的记录较少,同时被驱动表的连接列上又存在唯一性索引(或者被驱动表的连接列上存在选择性较好的非唯一性索引),那么此时使用嵌套循环的执行效率会非常高。如果驱动表所对应的驱动结果集数量较多,那么即使被驱动表的连接列上存在唯一性索引,那么执行效率也不会很高。

b.2)只要驱动结果集的记录较少,那么就具备了做嵌套循环的前提条件,而驱动表所对应的驱动结果集是在对驱动表应用了目标SQL之后所得到的结果集,所以大表也会可以作为驱动表的。

b.3)嵌套循环可以实现快速响应。

嵌套循环在访问被驱动表时,如果被驱动表有索引,将会采用单块读的方式访问索引,同时,如果返回结果集列不在索引中取得,嵌套循环连接也要采用单块读的方式回表。

(c)hash连接(hash join)

Hash连接是指两表在做连接时主要依靠哈希算法来取得结果集的方法

hash连接的适用场景总结入下:

b.1)哈希连接不一定需要排序,大部分情况下。

b.2)哈希连接的驱动表所对应的选择列可选择性应尽可能好,因为这个可选择性会影响到hash bucket的记录数,而hash bucket的记录数又会直接影响从该hash backet中查找匹配记录数的效率。

b.3)哈希连接只适用于CBO,同时哈希连接也只适用于等值连接。

b.4)哈希连接适合于小表和大表做表连接且连接结果集记录数较多的情形,特别是在小表的连接列可选择性特别好的情况下,这时hash连接的执行时间近似于对大表的执行时间。

b.5)当两表做hash连接时,如果在施加了目标SQL指定的谓语条件后所得到的数量较小的那个结果集所对应的hash table能够完全被容纳在内存中(pga),此时hash连接执行效率会非常高。

(d)笛卡尔连接(cross join)

笛卡尔连接又称笛卡尔积(cartesian product),它是一种两表在做连接时没有任何连接条件的表连接方法。

笛卡尔连接总结如下:

b.1)笛卡尔连接出现一般都是目标SQL中漏写了连接条件,所以笛卡尔连接一般都是不好的,除非刻意这样做(比如有时利用笛卡尔积来减少对目标SQL中大表的全表扫描次数)。

b.2)有时候笛卡尔连接的出现时因为目标SQL中使用了ordered hint,同时该SQL中文本委会相邻的两个表又没有直接的连接条件。

b.3)有时候笛卡尔连接出现时因为统计信息不准。

Cpanling
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL优化 SQL优化软件 SQL优化工具
12-14
SQL优化 SQL优化软件 SQL优化工具 很好用的工具,可以分析优化TSQL语句,oracle数据库语句优化工具
sql语句优化工具LECCO SQL Expert
男霸天--NO.1
07-25 3255
 引用 sql语句优化工具LECCO SQL Expert引用ken.liu2008 的 sql语句优化工具LECCO SQL Expert软件说明: 更优更快 人工智能自动SQL优化----------http://www.sina.com.cn 2001/12/12 17:48 中国电脑教育报文/SQL爱好者  所谓SQL,就是指Structured Query Lan
SQL性能优化神器!
最新发布
芋艿V
08-15 54
???? 这是一个或许对你有用的社群???? 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事上“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...
SQL优化优化器
u010740597的专栏
09-28 712
RBO 所有规则为一组内置的规则,这些规则是硬编码在oracle数据库代码中的 具体有规则:oracle在代码里事先给各个类型的执行路径定了一个级别,一共15级,oracle认为等级值低的比等级值高的执行效率要高; 当有两条以上执行路径等级相同时,可以通过调整相关对象在数据字典中的缓存顺序来影响RBO对于执行计划的选择;RBO按照从右到左的顺序来决定谁是驱动表谁是被驱动表 执行计划一旦出现问
sql优化之查询优化器
qq_37436172的博客
07-03 1688
本文大部分内容引用自代码搬运工.-MYSQL查询优化器 看本篇之前推荐看 innodb数据结构,缓冲区 熟悉数据库存数结构MySQL 使用典型的客户端/服务器(Client/Server)结构, 体系结构大体可以分为三层:客户端、服务器层以及存储引擎层。其中,服务器层又包括了连接管理、查询缓存 、SQL 接口、解析器、优化器、缓冲与缓存以及各种管理工具与服务等。逻辑结构图如下所示: 具体来说,每个组件的作用如下:客户端,连接 MySQL 服务器的各种工具和应用程序。例如 mysql 命令行工具、mysql
sql优化工具.zip
06-19
SQL Optimizer for SQL Server 优化工具。可以吧你的SQL优化成最优。 解压密码DotNet
收获,不止SQL优化--抓住SQL的本质1
08-03
- **全书总结**:本书不仅是一本关于SQL优化的技术书籍,更是引导读者进入SQL优化世界的指南。通过丰富的案例、实战经验和深入的技术探讨,帮助读者建立起从宏观到微观的优化思路,并最终达到“爽”的境界。 - **...
收获,不止SQL优化--抓住SQL的本质
07-23
资源名称:收获,不止SQL优化--抓住SQL的本质作者简介:梁敬彬,福富研究院副理事长、公司唯一四星级内训师。不仅是公司特级专家也是国内一线知名数据库专家,其个人及团队在数据库优化和培训领域有着丰富的经验、...
mysql-sql优化-小米开源-soar
12-13
MySQL SQL优化数据库管理中的关键环节,特别是在大数据量和高并发的业务场景下,SQL的高效执行直接影响到系统的性能和响应速度。小米开源的SOAR(SQL Optimizer And Rewriter)是一个专门针对MySQL数据库SQL优化...
人工智能自动sql优化工具--SQLTuning for SQL Server
09-10
**SQL优化工具SQLTuning for SQL Server详解** SQL语句是数据库系统中不可或缺的一部分,它直接决定了数据库的性能。在数据库操作中,虽然相同逻辑的SQL语句有多种写法,但不同写法对性能的影响可能相差甚远。面对...
数据库优化器
JohnWang1124的博客
03-07 1127
数据库优化器在我看来就好比是人的大脑。当我们的用户(可能是一条sql也可能是一个application,也可能是多个sql,多个application)在访问数据库的时候,优化器会给sql或者是app的请求提供最优质的服务。SQL是结构化的查询语言,他在执行的时候也是需要编译才能够被系统识别的,但是不同于其他面向对象或者是过程的开发语言,SQL并不要制定访问逻辑,你需要做的只是告诉数据库你要得到
SQL语句优化工具(QUEST SQL OPTIMIZER 8.5 TRAIL)
09-23
ORACLE数据库强大的SQL语句优化工具。这是最新的8.5版试用版。30天无功能限制。这是是压缩包得第二部分。
sql server 优化工具
01-24
LECCO SQL Expert for sql server,一款很好用的SQL语句优化工具 压缩包里含有注册机和汉化文件 软件破解注册及汉化说明 破解方法1: 1、安装Demo目录下的文件 2、把Crack目录的全部文件覆盖过去 3、用cr-sql25.exe生成注册码注册 破解方法2: 第一次安装时要求提供序列号可使用试用版的: 898724-355633-859461-053221 安装好后再用所带的工具cr-sql25生成注册号来注册就完全可以使用了 汉化文件使用方法: 安装好LECCO SQL Expert for SQL Server后,把文件复制到安装目录即可。
SQL Optimizer for SQL Server 10.0.3
11-05
SQL Optimizer for SQL Server 官方试用版,测试可用,如果有问题请留言交流
有了这 4 款工具,老板再也不怕我写烂SQL
知识分享
03-19 383
对于正在运行的mysql 性能如何?参数设置的是否合理?账号设置的是否存在安全隐患? 你是否了然于胸? 俗话说工欲善其事,必先利其器,定期对你的MYSQL数据库进行一个体检,是保证数据库安全运行的重要手段。 今天和大家分享几个mysql 优化的工具,你可以使用它们对你的mysql进行一个体检,生成awr报告,让你从整体上把握你的数据库的性能情况。 1、mysqltuner.pl 这是...
索引无效的几种情况
11-01 1917
。检查被索引的列或组合索引的首列是否出现在PL/SQL语句的WHERE子句中,这是“执行计划”能用到相关索引的必要条件。      。看采用了哪种类型的连接方式。ORACLE的共有Sort Merge Join(SMJ)、Hash Join(HJ)和Nested Loop Join(NL)。在两张表连接,且内表的目标列上建有索引时,只有Nested Loop才能有效地利用到该索引。SMJ即使相
Sql语句的优化以及Sql语句优化工具
m0_47912936的博客
07-13 747
这周在做项目的时候,发现有些Sql语句写的复杂,一个复杂的Sql语句不仅性能比较低下,当涉及到重构的时候也是不容易理解和读懂的,并且一个复杂的sql语句会显著增加程序的耦合度,所以Sql语句的优化就显的很必要了。 Sql语句复杂化的原因 首先列举一下Sql语句复杂化的原因: 将业务逻辑由Sql语句实现 数据库表的设计不符合第三范式 Sql语句中含有大量冗余的不必要逻辑 没有很好的利用视图 如何优化Sql语句呢 不要超过5个表以上的连接 超过5张表以上的连接会大大增加sql引擎的消耗。 考虑使用临
sql优化工具
qq_42511550的博客
10-07 257
数据库层⾯ 检查问题常⽤的 12 个⼯具: MySQL mysqladmin:MySQL 客户端,可进⾏管理操作 mysqlshow:功能强⼤的查看 shell 命令 SHOW [SESSION | GLOBAL] variables:查看数据库参数信息 SHOW [SESSION | GLOBAL] STATUS:查看数据库的状态信息 information_schema:获取元数据的⽅法 SHOW ENGINE INNODB STATUS:Innodb 引擎的所有状态 SHOW PROCESSLIST:
Sql 优化工具
白鸽
04-25 987
那么如何才能在此基础上,进一步分析,更方便的找出现存的问题?针对潜在的问题,给出改进的建议,是mysql优化的好帮手。pt-query-digest主要用来分析mysql的慢日志,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善。项目地址:https://www.percona.com/downloads/percona-toolkit/LATEST/这是mysql的另一个优化工具,针于mysql的整体进行一个体检,对潜在的问题,给出优化的建议。
"ORACLE SQL优化-共享原理及性能提升
通过了解SQL执行的过程、优化器的工作原理以及分析执行计划,我们可以逐步掌握SQL优化的方法和策略,提高SQL语句的执行性能,从而提升整个系统的性能和响应速度。在实际应用中,需要综合考虑业务需求、系统规模和...
写文章

热门文章

  • Oracle_高阶函数 1537
  • SQL优化-优化器 1473
  • Oracle—开窗函数例子 633

最新文章

  • Oracle—开窗函数例子
  • Oracle_高阶函数
2022年3篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王咸宁工厂网站优化价格威武网站优化太原家居行业网站优化推广特点宁波优化网站厂家安阳网站关键词优化技术庐江网站优化公司哪家好网站优化程序员网站快速优化很好火26星至武穴网站关键词优化青浦区官方网站优化方案定制玉田网站优化哪里不错廊坊网站霸屏排名优化仪征市优化网站哪家便宜wap网站怎么优化增城正规网站优化青岛h5动效网站优化网站内部优化公司长安网站优化推广多少钱格力网站推广优化网站优化有哪些方式商城网站优化在线推广iis优化网站打开速度铜陵网站优化企业网站seo优化交流怎样网站优化根据效果付费莱山集团网站优化红山网站优化互联网推广网站优化排名宿迁seo网站优化企业邯郸放心的网站设计优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化