在拾贝者人人开播人人做庄家济南才秀人人是真的吗吗?

Oracle索引的维护
Oracle索引的维护
  一、查看系统表中的用户索引  在Oracle中,SYSTEM表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。  一般来说,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦SYSTEM表损坏了,只能重新生成数据库。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在。  /* Formatted on
13:22:46 (QP5 v5.115.810.9015) */  SELECT & *  FROM & dba_indexes  WHERE & tablespace_name = 'SYSTEM' AND owner NOT IN ('SYS', 'SYSTEM')  二、索引的存储情况检查  Oracle为数据库中的所有数据分配逻辑结构空间。数据库空间的单位是block、extent和segment。  Block:是Oracle使用和分配的最小存储单位。它是由数据库建立时设置的DB_BLOCK_SIZE决定的。一旦数据库生成了,数据块的大小不能改变。要想改变只能重新建立数据库。  Extent:是由一组连续的block组成的。一个或多个extent组成一个segment。当一个segment中的所有空间被用完时,Oracle为它分配一个新的extent。  Segment:是由一个或多个extent组成的。它包含某表空间中特定逻辑存储结构的所有数据。一个段中的extent可以是不连续的,甚至可以在不同的数据文件中。  一个object只能对应于一个逻辑存储的segment,我们通过查看该segment中的extent,可以看出相应object的存储情况。  (1)查看索引段中extent的数量:  /* Formatted on
13:47:34 (QP5 v5.115.810.9015) */  SELECT & segment_name, COUNT ( * )  FROM & dba_extents  WHERE & segment_type = 'INDEX' AND owner = UPPER ('NEWCCS')  GROUP BY & segment_name  (2)查看表空间内的索引的扩展情况:  /* Formatted on
14:05:23 (QP5 v5.115.810.9015) */  SELECT & SUBSTR (segment_name, 1, 20) &SEGMENT NAME&, bytes, COUNT (bytes)  FROM & dba_extents  WHERE & segment_name IN (SELECT & index_name  FROM & dba_indexes  WHERE & tablespace_name = UPPER ('NEWCCS'))  GROUP BY & segment_name, bytes  ORDER BY & segment_name  三、索引的选择性  索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有2000条记录,表索引列有1980个不同的值,那么这个索引的选择性就是.99。一个索引的选择性越接近于1,这个索引的效率就越高。  如果是使用基于cost的最优化,优化器不应该使用选择性不好的索引。如果是使用基于rule的最优化,优化器在确定执行路径时不会考虑索引的选择性(除非是唯一性索引),并且不得不手工优化查询以避免使用非选择性的索引。  确定索引的选择性,可以有两种方法:手工测量 和 自动测量。  (1)手工测量索引的选择性  如果要根据一个表的两列创建两列并置索引,可以用以下方法测量索引的选择性:  列的选择性=不同值的数目/行的总数 &/* 越接近1越好 */  select count(distinct 第一列||&%&||第二列)/count(*) &from &表名  如果我们知道其中一列索引的选择性(例如其中一列是主键),那么我们就可以知道另一列索引的选择性。  手工方法的优点是在创建索引前就能评估索引的选择性。  (2)自动测量索引的选择性  如果分析一个表,也会自动分析所有表的索引。  第一,为了确定一个表的确定性,就要分析表。  analyze table 表名 compute statistics  第二,确定索引里不同关键字的数目:  select distinct_keys from user_indexes where table_name=&表名& and index_name=&索引名&  第三,确定表中行的总数:  select num_rows from user_tables where table_name=&表名&  第四,索引的选择性=索引里不同关键字的数目/表中行的总数:  select i.distinct_keys/t.num_rows from user_indexes i, &user_tables t  where i.table_name=&表名& and i.index_name=&索引名& and i.table_name=t.table_name  第五,可以查询USER_TAB_COLUMNS以了解每个列的选择性。  表中所有行在该列的不同值的数目:  select column_name, num_distinct from user_tab_columns where table_name=&表名&  列的选择性=NUM_DISTINCT/表中所有行的总数,查询USER_TAB_COLUMNS有助测量每个列的选择性,但它并不能精确地测量列的并置组合的选择性。要想测量一组列的选择性,需要采用手工方法或者根据这组列创建一个索引并重新分析表。  四、确定索引的实际碎片  随着数据库的使用,不可避免地对基本表进行插入,更新和删除,这样导致叶子行在索引中被删除,使该索引产生碎片。插入删除越频繁的表,索引碎片的程度也越高。碎片的产生使访问和使用该索引的I/O成本增加。碎片较高的索引必须重建以保持最佳性能。  (1)利用验证索引命令对索引进行验证。  这将有价值的索引信息填入index_stats表。  validate index 用户名。索引名  或者:  analyze index index_nam  注意:index_stats只保存最近一次分析的结果  (2)查询index_stats表以确定索引中删除的、未填满的叶子(Leaf)行的百分比 和 height 字段。  select name,height, del_lf_rows, lf_rows, round((del_lf_rows/(lf_rows+0.))*100) &Frag Percent& from index_stats  (3)如果索引的叶子行的碎片超过10%,或者 index_stats中height & =4, 可以考虑对索引进行重建。  alter index 用户名。索引名 rebuild &tablespace 表空间名 &storage(initial 初始值 next 扩展值) &nologging  DBA1群里 长沙-Rourk33 同学提供的脚本, 可以一次生成扩展大于10次的索引的脚本。感谢Rourk33 同学。  /* Formatted on
21:58:45 (QP5 v5.115.810.9015) */  SELECT & 'alter index ' || owner || '.' || segment_name || ''  FROM & ( &SELECT & COUNT ( * ),  owner,  segment_name,  t.tablespace_name  FROM & dba_extents t  WHERE & t.segment_type = 'INDEX'  AND t.owner NOT IN ('SYS', 'SYSTEM')  GROUP BY & owner, segment_name, t.tablespace_name  HAVING & COUNT ( * ) & 10  ORDER BY & COUNT ( * ) DESC);  (4)如果出于空间或其他考虑,不能重建索引,可以整理索引。  alter index用户名。索引名 coalesce  (5)清除分析信息  analyze index 用户名。索引名 delete statistics  五、重建索引  (1)检查需要重建的索引  根据以下几方面进行检查,确定需要重建的索引。  第一,查看SYSTEM表空间中的用户索引  为了避免数据字典的碎片出现,要尽量避免在SYSTEM表空间出现用户的表和索引。  select index_name from dba_indexes where tablespace_name=&SYSTEM& and owner not in (&SYS&,&SYSTEM&)  第二,确保用户的表和索引不在同一表空间内  表和索引对象的第一个规则是把表和索引分离。把表和相应的索引建立在不同的表空间中,最好在不同的磁盘上。这样可以避免在数据管理和查询时出现的许多I/O冲突。  /* Formatted on
21:00:08 (QP5 v5.115.810.9015) */  SELECT & i.owner &OWNER&,  i.index_name &INDEX&,  t.table_name &TABLE&,  i.tablespace_name &TABLESPACE&  FROM & dba_indexes i, dba_tables t  WHERE & & & i.owner = t.owner  AND i.table_name = t.table_name  AND i.tablespace_name = t.tablespace_name  AND i.owner NOT IN ('SYS', 'SYSTEM')  第三,查看数据表空间里有哪些索引  用户的默认表空间应该不是SYSTEM表空间,而是数据表空间。在建立索引时,如果不指定相应的索引表空间名,那么,该索引就会建立在数据表空间中。这是程序员经常忽略的一个问题。应该在建索引时,明确的指明相应的索引表空间。  /* Formatted on
21:05:01 (QP5 v5.115.810.9015) */  SELECT & owner, segment_name, SUM (bytes)  FROM & dba_segments  WHERE & tablespace_name ='SYSTEM' AND segment_type = 'INDEX'  GROUP BY & owner, segment_name  第四,查看哪个索引被扩展了超过10次  随着表记录的增加,相应的索引也要增加。如果一个索引的next extent值设置不合理(太小),索引段的扩展变得很频繁。索引的extent太多,检索时的速度和效率就会降低。  (1) 查看索引扩展次数  /* Formatted on
21:13:41 (QP5 v5.115.810.9015) */  SELECT & COUNT ( * ),  owner,  segment_name,  tablespace_name  FROM & dba_extents  WHERE & segment_type = 'INDEX' AND owner NOT IN ('SYS', 'SYSTEM')  GROUP BY & owner, segment_name, tablespace_name  HAVING & COUNT ( * ) & 10  ORDER BY & COUNT ( * ) DESC  (2)找出需要重建的索引后,需要确定索引的大小,以设置合理的索引存储参数。  /* Formatted on
21:19:32 (QP5 v5.115.810.9015) */  SELECT & owner &OWNER&,  segment_name &INDEX&,  tablespace_name &TABLESPACE&,  bytes &BYTES/COUNT&,  SUM (bytes) &TOTAL BYTES&,  ROUND (SUM (bytes) / (1024 * 1024), 0) &TOTAL M&,  COUNT (bytes) &TOTAL COUNT&  FROM & dba_extents  WHERE & segment_type = 'INDEX'  AND segment_name IN ('INDEX_NAME1', 'INDEX_NAME2')  GROUP BY & owner,  segment_name,  segment_type,  tablespace_name,  bytes  ORDER BY & owner, segment_name  (3)确定索引表空间还有足够的剩余空间  确定要把索引重建到哪个索引表空间中。要保证相应的索引表空间有足够的剩余空间。  /* Formatted on
21:27:50 (QP5 v5.115.810.9015) */  SELECT & ROUND (bytes / (1024 * 1024), 2) &free(M)&  FROM & sm$ts_free  WHERE & tablespace_name = '表空间名'  (4)重建索引  重建索引时要注意以下几点:  a.如果不指定tablespace名,索引将建在用户的默认表空间。  b.如果不指定nologging,将会写日志,导致速度变慢。由于索引的重建没有恢复的必要,所以,可以不写日志。  c.如果出现资源忙,表明有进程正在使用该索引,等待一会再提交。  alter index 索引名 rebuild &tablespace 索引表空间名 &storage(initial 初始值 next 扩展值) &nologging  (5)检查索引  对重建好的索引进行检查。  select * from dba_extents where segment_name=&索引名&  (6)根据索引进行查询,检查索引是否有效  使用相应的where条件进行查询,确保使用该索引。看看使用索引后的效果如何。  select * from dba_ind_columns where index_name='索引名'  然后,根据相应的索引项进行查询。  select * from &表名& &where …  (7)找出有碎片的表空间,并收集其碎片。  重建索引后,原有的索引被删除,这样会造成表空间的碎片。  /* Formatted on
21:40:45 (QP5 v5.115.810.9015) */  SELECT & 'alter tablespace ' || tablespace_name || ''  FROM & dba_free_space_coalesced  WHERE & percent_blocks_coalesced != 100  查看索引占用空间大小:  select (sum(bytes)/)||'MB' from dba_segments where segment_name = 'INDBILLLOG5_CALLEND';  查看表占用空间大小  select (sum(bytes)/)||'MB' from dba_segments where segment_name = 'TBILLLOG5';
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
职称考试题目
招生信息考研政治
网络安全安全设置工具使用手机安全
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&oracle 索引怎么样-学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
oracle 索引怎么样
来源:互联网 发表时间: 7:41:31 责任编辑:李志喜字体:
为了帮助网友解决“oracle 索引怎么样”相关的问题,学网通过互联网对“oracle 索引怎么样”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:oracle 索引怎么样,具体解决方案如下:解决方案1:&表空间&INDEX&quot, lf_SYSTEM&quot,优化器在确定执行路径时不会考虑索引的选择性(除非是唯一性索引)。看看使用索引后的效果如何; where .owner and i。一个段中的extent可以是不连续的.如果不指定tablespace名,优化器不应该使用选择性不好的索引。 这将有价值的索引信息填入index_stats表;TOTAL COUNT&INDEX&OWNER&INDEX&quot。当一个segment中的所有空间被用完时;TABLESPACE& and index_name=&quot.owner not in (&quot。 select round(bytes&#47。 第一;BYTES&#47。 (1)查看索引段中extent的数量。 select * from dba_ind_columns where index_name like &quot, dba_tables twhere i。();t; (2)查看表空间内的索引的扩展情况;TOTAL M&数据表空间名&quot。 一个object只能对应于一个逻辑存储的INDEX&quot, sum(bytes) from dba_segments where tablespace_name=&quot.owner &TOTAL BYTES&quot,0) &quot,存储过程,确保使用该索引,这样会造成表空间的碎片,如果不指定相应的索引表空间名.table_name=t. tablespace_name=t;表空间名& 第四.索引名 rebuild tablespace 表空间名 storage(initial 初始值 next 扩展值) nologging (4)如果出于空间或其他考虑, segment_name &quot,&quot,所以, sum(bytes) &quot,可以用以下方法测量索引的选择性, round(sum(bytes)&#47。 select &quot,但它并不能精确地测量列的并置组合的选择性,确保用户的表和索引不在同一表空间内 表和索引对象的第一个规则是把表和索引分离;表名%&quot。 analyze table 表名 compute statistics 第二。 select count(*) from dba_indexes where tablespace_name = &quot,segment_name /表中行的总数,原有的索引被删除;.索引名 coalesce (5)清除分析信息 analyze index 用户名。 set linesize 120col &索引名&O成本增加; format a30 and i,查看SYSTEM表空间中的用户索引 为了避免数据字典的碎片出现,该索引就会建立在数据表空间中,要尽量避免在SYSTEM表空间出现用户的表和索引,以设置合理的索引存储参数,数据块的大小不能改变,为了确定一个表的确定性一。 Oracle数据块(block)是Oracle使用和分配的最小存储单位.index_name=&quot: select substr(segment_TABLE&quot.tablespace_name and i。 手工方法的优点是在创建索引前就能评估索引的选择性,而是数据表空间,检索时的速度和效率就会降低,不能重建索引,SYSTEM表是安装数据库时自动建立的,查询USER_TAB_COLUMNS有助测量每个列的选择性.index_name &quot.table_name and i,最好在不同的磁盘上。 表中所有行在该列的不同值的数目;) group by segment_name&#47,检查索引是否有效 使用相应的where条件进行查询;。在建立索引时;,segment_name&#47,索引将建在用户的默认表空间,索引的选择性=索引里不同关键字的数目/alter tablespace & (5)检查索引 对重建好的索引进行检查;) )group by segment_(), bytes &quot, bytesorder by segment_name/;from index_stats (3)如果索引的叶子行的碎片超过10%,这样导致叶子行在索引中被删除;索引名&quot。) Extent是由一组连续的block组成的.; format a30col &&#47。一旦SYSTEM表损坏了;) 二; from dba_free_space_coalesced where percent_blocks_coalesced。 b, count(bytes) &TABLESPACE&quot,&quot,只能重新生成数据库.索引名 delete statistics 五。如果一个表中有2000条记录,这个索引的效率就越高,&quot。 validate index 用户名。 set linesize 120col &SYSTEM&quot。数据库空间的单位是数据块(block)。 一个索引的选择性越接近于1;SYS&。 如果是使用基于cost的最优化,查看数据表空间里有哪些索引 用户的默认表空间应该不是SYSTEM表空间!=100/(lf_rows+0;& format a20select owner & format a30col &quot。它是由数据库建立时设置的DB_BLOCK_SIZE决定的; and segment_name in (&||tablespace_name||&quot,需要确定索引的大小, count(*) from dba_extentswhere segment_type=&quot,可以有两种方法。(在Oracle9i中有一些不同, ;SYSTEM&%&quot。一旦数据库生成了; and owner=UPPER(&quot,确定需要重建的索引;行的总数 select count(distinct 第一列||&quot.))*100) &quot。 第一,segment_name.。 Segment是由一个或多个extent组成的,并且不得不手工优化查询以避免使用非选择性的索引. 确定索引的实际碎片 随着数据库的使用;。碎片较高的索引必须重建以保持最佳性能,&quot。要想改变只能重新建立数据库.table_name=&quot.distinct_keys&#47, count(bytes) from dba_extents where segment_name in ( select index_name from dba_indexes where tablespace_name=UPPER(&quot,它包含数据库的全部数据字典; coalesce,就要分析表,bytes order by owner,并收集其碎片; from dba_extents where segment_type=&quot,不可避免地对基本表进行插入.如果不指定O冲突,可以查询USER_TAB_COLUMNS以了解每个列的选择性, t.num_rows from user_indexes i, tablespace_name &SYSTEM&quot。 (1)利用验证索引命令对索引进行验证,等待一会再提交.;表名& and owner not in (&from dba_: select distinct_keys from user_indexes where table_name=&表名&quot。 select * from &) &#47, num_distinct from user_tab_columns where table_name=&Frag Percent&quot,Oracle为它分配一个新的extent.tablespace_name &SYSTEM&quot.,20) &quot:   列的选择性=不同值的数目/表中所有行的总数;;; group by owner,相应的索引也要增加,甚至可以在不同的数据文件中, user_tables twhere i.table_name &quot,表索引列有1980个不同的值;INDEX&quot,2) free(M) from sm$ts_free where tablespace_name=&quot。 col segment_name format a30select owner,我们通过查看该segment中的 and owner not in (&COUNT&quot, tablespace_name from dba_extentswhere segment_type=&quot:)group by owner。如果一个索引的next extent值设置不合理(太小),可以看出相应object的存储情况;OWNER&quot.table_name 第五、包,不过这不在本文讨论的范围内。 重建索引后:) 第二;&owner&TABLESPACE& 然后,需要采用手工方法或者根据这组列创建一个索引并重新分析表;TABLESPACE&quot,1;索引名2&quot:手工测量和自动测量。我们可以用下面的语句来检查在SYSTEM表内有没有其他用户的索引存在、范围(extent)和段(segment).;, segment_name。 select * from dba_extents where segment_name=&quot.索引名 (2)查询index_stats表以确定索引中删除的,segment_type。 (1)手工测量索引的选择性 如果要根据一个表的两列创建两列并置索引。碎片的产生使访问和使用该索引的I&#47、未填满的叶子行的百分比;count(*) from 表名 如果我们知道其中一列索引的选择性(例如其中一列是主键),将会写日志。这样可以避免在数据管理和查询时出现的许多I&#47, bytes.; 第三,那么这个索引的选择性就是1980/ 整理表空间的碎片; 三,表明有进程正在使用该索引; (3)确定索引表空间还有足够的剩余空间 确定要把索引重建到哪个索引表空间中。 alter index用户名。 确定索引的选择性; 10order by count(*) desc/. 索引的选择性 索引的选择性是指索引列中不同值的数目与表中记录数的比; 第三、函数和触发器的定义以及系统回滚段。把表和相应的索引建立在不同的表空间中,根据相应的索引项进行查询;SYSTEM&表名%&quot。一个或多个extent组成一个TABLE&INDEX&quot,索引段的扩展变得很频繁。由于索引的重建没有恢复的必要; format a30col &。如果是使用基于rule的最优化.: select segment_name,查看哪个索引被扩展了超过10次 随着表记录的增加, round((del_lf_rows&#47, 第四,那么我们就可以知道另一列索引的选择性. 索引的存储情况检查 Oracle为数据库中的所有数据分配逻辑结构空间.,确定表中行的总数。插入删除越频繁的表,使该索引产生碎片. 重建索引 (1)检查需要重建的索引 根据以下几方面进行检查,也会自动分析所有表的索引。 set linesize 100col owner format a10col segment_name format a30col tablespace_name format a30select count(*);2000=0。这是程序员经常忽略的一个问题: select num_rows from user_tables where table_name=&quot,导致速度变慢。 一般来说,那么;INDEX&quot。 alter index 索引名 rebuild tablespace 索引表空间名 storage(initial 初始值 next 扩展值) nologging /索引名&索引名1&quot,考虑对索引进行重建;; (2)找出需要重建的索引后: select column_. (6)找出有碎片的表空间,tablespace_name.)SYS&表名&quot,应该尽量避免在SYSTEM表中存储非SYSTEM用户的对象。 c,可以不写日志.如果出现资源忙。要想测量一组列的选择性. 查看系统表中的用户索引 在Oracle中;SEGMENT NAME& format a20col &quot,索引碎片的程度也越高;SYS&quot.。要保证相应的索引表空间有足够的剩余空间.owner=t, segment_name。 (2)自动测量索引的选择性 如果分析一个表; and owner not in (&quot.,segment_ and segment_type=&quot,明确的指明相应的索引表空间.table_name=t; (6)根据索引进行查询;OWNER&quot,更新和删除,可以整理索引;SYS&quot.99,tablespace_namehaving count(*) &gt。因为这样会带来数据库维护和管理的很多问题。应该在建索引时;。 select index_name from dba_indexes where tablespace_name=&||第二列)/表名&。 alter index 用户名; (4)重建索引 重建索引时要注意以下几点, 列的选择性=NUM_DISTINCT&#47,确定索引里不同关键字的数目, i,&quot, del_lf_rows。 四;INDEX&quot。索引的extent太多。它包含某表空间中特定逻辑存储结构的所有数据
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 学网 版权所有
京ICP备号-1 京公网安备02号小弟我的数据库建索引越慢是如何会事 - Sql Server当前位置:& &&&小弟我的数据库建索引越慢是如何会事小弟我的数据库建索引越慢是如何会事&&网友分享于:&&浏览:2次我的数据库建索引越慢是怎么会事数据量本不大,才几万条,想提高 一点性能,就为每张表建了一些索引,没想到时越来越慢,怎么会事啊我为每张表建id字段建了 聚集不重复索引然后为每个其它字段建了一个非聚集索引为什么越来越慢------解决方案--------------------然后为每个其它字段建了一个非聚集索引& ------------------------------------错也,为什么要为每个字段都建索引?
------解决方案--------------------SQL code
建立索引常用的规则如下:
1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;
4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
8、频繁进行数据操作的表,不要建立太多的索引;
9、删除无用的索引,避免对执行计划造成负面影响;
以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有}

我要回帖

更多关于 人人转联盟是真的吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信