SQL性能测试重点题目及详尽答案_第1页
SQL性能测试重点题目及详尽答案_第2页
SQL性能测试重点题目及详尽答案_第3页
SQL性能测试重点题目及详尽答案_第4页
SQL性能测试重点题目及详尽答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL性能测试重点题目及详尽答案考试时间:______分钟总分:______分姓名:______一、单项选择题(每题只有一个正确答案,请将正确选项的字母填入括号内)1.在进行SQL性能测试时,哪个指标最能直接反映查询处理的响应速度?A.吞吐量B.资源利用率C.响应时间D.并发用户数2.当执行一个包含多个表的JOIN查询时,数据库通常倾向于按照哪种顺序来处理表连接?A.随机顺序B.表中记录数最多的顺序C.表中记录数最少的顺序D.被JOIN关键字出现的先后顺序3.查看SQL语句执行计划最常用的数据库系统命令或工具是?A.EXPLAINANALYZE(或其等效命令)B.SHOWPROCESSLISTC.DESC表名D.SHOWINDEXFROM表名4.对于频繁用于查询条件且数据值区分度高的列,创建哪种类型的索引通常效果最好?A.覆盖索引(CoveringIndex)B.唯一索引(UniqueIndex)C.组合索引(CompositeIndex)D.全文索引(Full-textIndex)5.在执行涉及大量数据排序的查询时,如果无法使用索引进行优化,数据库通常会采用哪种主要策略?A.快速排序(QuickSort)B.归并排序(MergeSort)C.堆排序(HeapSort)D.哈希排序(HashSort)6.以下哪种SQL语句的结构最有可能导致执行计划中进行全表扫描?A.`SELECT*FROMtableWHEREindexed_column='value'`B.`SELECT*FROMtableWHEREnon_indexed_column='value'`C.`SELECT*FROMtableORDERBYindexed_column`D.`SELECT*FROMtableWHEREcolumn1='value'ANDcolumn2='value'`(假设column1和column2均无索引)7.在优化包含多个条件的WHERE子句时,如果多个条件都能单独建立索引,通常哪种策略更能提高查询效率?A.将最常用的条件放在索引的最前列B.将最不常用的条件放在索引的最前列C.索引顺序无关紧要D.创建多个单列索引比创建组合索引更好8.`EXPLAIN`命令输出的执行计划中,哪个字段(或阶段)最能指示数据库是否使用了某个特定的索引?A.`Table`B.`Type`(或`key`)C.`Extra`D.`Rows`9.对于查询只需要返回特定几列数据,而表包含大量列的情况,以下哪种做法最能提高查询性能?A.使用`SELECT*`B.使用`SELECTcolumn1,column2,...`明确列出所需列C.创建覆盖索引包含所需列D.增加表的分区数10.以下哪种JOIN操作在执行时,如果参与JOIN的表都有关联列上的索引,通常效率最高?A.INNERJOINB.LEFTJOINC.RIGHTJOIND.FULLOUTERJOIN二、多项选择题(每题有多个正确答案,请将所有正确选项的字母填入括号内,多选或少选均不得分)1.以下哪些是衡量SQL查询性能的关键指标?A.平均响应时间B.查询成功率C.CPU和IO使用率D.并发连接数2.以下哪些情况可能导致数据库无法使用索引进行查询优化?A.WHERE子句中的条件使用了函数,导致索引失效B.查询涉及多表JOIN,且JOIN条件列没有索引C.数据库表进行了大量的INSERT、UPDATE、DELETE操作,索引变得碎片化D.查询的WHERE条件过滤后返回的数据量非常大,即使有索引扫描成本也高于全表扫描3.以下哪些是常见的SQL查询优化技术?A.重写复杂的子查询为JOINB.为经常用于JOIN和WHERE条件的列创建索引C.避免在SELECT列表中使用函数处理非索引列D.使用`LIMIT`子句限制返回的数据行数4.组合索引(CompositeIndex)的设计需要注意哪些原则?A.将最常用作过滤条件的列放在组合索引的最前列B.将数据值区分度(选择性)高的列放在组合索引的最前列C.组合索引的顺序应与查询中列的使用顺序一致D.组合索引中列的顺序对性能有显著影响5.以下哪些SQL语句或操作可能引起索引碎片化?A.大量的INSERT操作向表中添加新行B.大量的UPDATE操作修改了索引列的值C.大量的DELETE操作从表中移除了行D.执行`OPTIMIZETABLE`或`REINDEX`命令6.在分析执行计划时,以下哪些信息有助于判断查询性能?A.`SelectType`(查询类型)B.`Table`(使用的表)C.`Type`(访问类型,如const,ref,index,all)D.`Rows`(估计扫描的行数)E.`Extra`(额外的信息,如Usingindex)7.以下哪些JOIN类型在参与JOIN的表上没有合适的索引时,可能导致效率低下?A.INNERJOINB.LEFTJOINC.RIGHTJOIND.FULLOUTERJOIN8.慢查询日志(SlowQueryLog)主要用于记录什么信息?A.所有执行的SQL语句B.执行时间超过预设阈值的SQL语句及其执行计划C.出现错误的SQL语句D.长时间占用连接资源的SQL语句9.以下哪些数据库对象或设置可能对SQL查询性能产生全局性影响?A.数据库字符集和排序规则B.表的分区策略C.缓存(如BufferPool大小)D.数据库的并发连接数限制10.在进行SQL性能测试时,需要关注哪些方面?A.测试环境的配置(硬件、网络、数据库版本)B.负载生成策略(用户数、请求频率、思考时间)C.关键业务SQL的性能表现D.数据库服务器资源监控数据(CPU,内存,IO,网络I/O)三、填空题(请将答案填写在横线上)1.分析和优化SQL性能,最核心的工具是__________。2.索引通过维护一棵__________结构来快速定位数据。3.在执行计划中,`Type`字段值为`ALL`通常表示数据库执行了__________扫描。4.对于需要返回多行结果的排序查询,如果无法利用索引排序,数据库可能会使用__________排序。5.优化JOIN查询时,应尽量减少参与JOIN的表的数量,并确保__________列上有索引。6.`EXPLAIN`命令主要用来分析查询的__________和执行成本。7.覆盖索引是指索引本身包含了查询所需的所有列,这样查询可以直接从索引中获取数据,避免了回表操作。8.在设计组合索引时,如果查询通常只使用其中部分列作为条件,则应将最常用的列放在索引的__________。9.对于经常需要根据某个范围或列表值进行查询的列,可以考虑创建__________索引。10.即使某个查询因为返回数据量太大而被认为“慢”,如果它只偶尔执行且对整体性能影响不大,通常也不必优先进行优化。四、判断题(请判断下列说法的正误,正确的填“√”,错误的填“×”)1.`EXPLAIN`命令可以精确预测SQL语句在实际运行时的执行时间。()2.所有的SQL查询,只要加了索引就一定能提高性能。()3.内连接(INNERJOIN)会返回两个表中匹配的行,左外连接(LEFTJOIN)会返回左表所有行以及右表中匹配的行。()4.使用`SELECTDISTINCT`会对查询性能产生负面影响,因为它通常需要额外的排序或去重操作。()5.对于经常执行的复杂查询,可以考虑使用存储过程来提高性能。()6.索引虽然能加速查询,但也会增加数据插入、更新和删除的开销,因为它需要维护索引结构。()7.查询优化器总是能生成最优的执行计划。()8.使用分区表可以将一个大表逻辑上分成多个小表,有助于提高某些类型查询的性能。()9.如果执行计划显示`Usingtemporary`,通常意味着查询需要使用临时表,这通常对性能不利。()10.优化SQL性能主要是指提高查询的响应时间。()五、简答题(请简要回答下列问题)1.简述什么是SQL性能测试,以及进行SQL性能测试的主要目标是什么?2.解释什么是SQL执行计划,以及分析执行计划对于优化SQL性能的重要性。3.当发现一个SQL查询执行缓慢时,你可以采取哪些步骤来分析和诊断性能瓶颈?4.说明创建索引和不创建索引情况下,数据库在执行数据插入、更新和删除操作时的主要区别。5.在进行SQL查询优化时,除了考虑索引,还有哪些常见的优化手段?六、SQL优化题(请根据要求优化下列SQL语句或回答相关问题)1.假设有以下表结构:```sql--表1:employees(emp_idINT,emp_nameVARCHAR(50),dept_idINT,hire_dateDATE)--表2:departments(dept_idINT,dept_nameVARCHAR(50))--表3:salaries(emp_idINT,salaryDECIMAL(10,2),pay_dateDATE)```请优化以下查询语句:```sql--查询每个部门的平均最高工资(即每个部门薪水最高的员工工资的平均值)SELECTd.dept_name,AVG(s.salary)ASavg_highest_salaryFROMemployeeseJOINdepartmentsdONe.dept_id=d.dept_idJOINsalariessONe.emp_id=s.emp_idGROUPBYd.dept_name;```请分析原查询可能存在的性能问题,并提出优化建议(可以包括SQL语句修改或索引建议)。2.假设有一个大表`orders`(order_idINT,customer_idINT,order_dateDATE,total_amountDECIMAL(10,2)),其中`order_date`列没有索引。请优化以下查询:```sql--查询2023年第四季度的总销售额,以及每个订单金额超过1000元的订单数量SELECTSUM(total_amount)AStotal_sales,COUNT(*)ASorders_over_1000FROMordersWHEREorder_dateBETWEEN'2023-10-01'AND'2023-12-31';```请提供优化后的SQL语句,并说明优化的理由。3.分析以下SQL语句的执行计划(假设`orders`表有`order_id`,`customer_id`,`order_date`列,`customers`表有`customer_id`,`customer_name`列,且`order_date`和`customer_id`均无索引):```sqlSELECTc.customer_name,COUNT(o.order_id)ASorder_countFROMcustomerscLEFTJOINordersoONc.customer_id=o.customer_idWHEREo.order_date='2023-11-15'GROUPBYc.customer_nameORDERBYorder_countDESCLIMIT10;```指出该查询可能存在的性能瓶颈,并提出至少两条优化建议。试卷答案一、单项选择题1.C解析:响应时间直接衡量从发出SQL请求到收到返回结果所需的时间,是评价查询速度的核心指标。2.C解析:数据库通常倾向于先处理记录数少的表,这样可以更快地生成候选行,减少后续JOIN的计算量。3.A解析:`EXPLAIN`或`EXPLAINANALYZE`(取决于数据库系统)是专门用于展示SQL语句执行计划的结构化命令。4.D解析:全文索引适用于文本内容搜索,唯一索引保证唯一性,覆盖索引包含查询所需全部列,而数据值区分度高的列最适合作为索引以过滤掉大量无关数据。5.B解析:当无法使用索引排序时,数据库通常会采用归并排序,该排序方式需要扫描索引或数据行并按顺序合并结果。6.B解析:如果WHERE子句条件列没有索引,数据库无法利用索引快速过滤数据,只能进行全表扫描来查找匹配行。7.A解析:索引的顺序很重要,将最常用、选择性最高的条件放在组合索引前列,能最大化索引的利用效率。8.B解析:执行计划中的`Type`(或`key`)字段显示了数据库是使用哪种方式(如索引扫描、全表扫描等)来访问表的,直接反映了是否使用了特定索引。9.B解析:明确列出所需列避免了数据库读取并返回不需要的数据,减少了数据传输量。创建覆盖索引更佳,但明确列出是基本优化。10.A解析:INNERJOIN在参与表都有索引的情况下,通常可以通过索引查找匹配行,效率最高。外连接需要处理不匹配的情况,通常更复杂。二、多项选择题1.A,C解析:平均响应时间是衡量单个查询速度的指标,CPU和IO使用率反映了数据库处理查询的资源消耗,两者是核心性能指标。查询成功率和并发连接数是系统整体状态指标。2.A,B,C,D解析:函数在WHERE条件中会使得索引失效,因为索引无法利用函数计算结果;JOIN条件列无索引会导致无法利用索引进行连接;索引碎片化会增加索引扫描成本;返回大量数据时,即使有索引,I/O成本也可能高于全表扫描。3.A,B,C,D解析:重写子查询为JOIN、创建合适的索引、避免非索引列函数处理、使用LIMIT限制结果集都是常见的有效的SQL优化技术。4.A,B,D解析:最常用作过滤条件的列应放最前;数据值区分度(选择性)高的列应放最前以有效过滤数据;列的顺序显著影响索引效用,应根据查询模式安排。5.A,B,C,D解析:INSERT、UPDATE、DELETE操作会修改或删除行,导致索引页数据变更或页分裂,从而产生碎片。手动OPTIMIZE操作会重新组织数据并创建新索引,也会被视为引起碎片化(但目的是消除碎片)。6.A,B,C,D,E解析:查询类型、使用的表、访问类型、估计行数、额外信息(如是否使用索引)都是执行计划中重要的信息,有助于分析性能瓶颈。7.A,B,C,D解析:所有JOIN类型(INNER,LEFT,RIGHT,FULLOUTER)在缺少合适索引时,都可能需要扫描大量行或进行复杂的表扫描操作,导致效率低下。8.B解析:慢查询日志的核心作用是记录执行时间超过预设阈值的SQL语句,帮助定位需要优化的慢查询,并附带执行计划。9.A,B,C,D解析:字符集排序影响比较操作,分区表优化范围查询,缓存大小直接影响数据访问速度,并发连接数限制影响系统处理能力,这些都与查询性能相关。10.A,B,C,D解析:性能测试需要考虑真实环境配置、负载生成方式、关键SQL表现以及监控全面的数据,这些方面缺一不可。三、填空题1.执行计划(或EXPLAIN)解析:分析和优化SQL性能最核心的工具是查看和理解SQL语句的执行计划。2.B-Tree(或B+Tree)解析:最常见的索引结构是B树或其变种B+树,它们支持高效的查找、插入和删除操作。3.全表(或FullTable)解析:执行计划中`Type`为`ALL`表示数据库执行了全表扫描,即读取了表中的所有数据行。4.堆解析:当无法使用索引排序时,数据库可能需要将满足WHERE条件的数据先加载到内存中的堆(Heap)中,然后再进行排序。5.连接(或JOIN)解析:JOIN是两个表关联的关键,确保JOIN条件列上有索引可以加速连接操作,避免对连接列进行全表扫描。6.执行计划(或ExecutionPlan)解析:`EXPLAIN`命令的主要作用是展示SQL语句的执行计划,即数据库如何执行该查询的详细步骤。7.覆盖解析:覆盖索引包含了查询所需的所有列,无需回表访问表数据,效率极高。8.最前(或第一位)解析:在组合索引中,最常用的列应放在最前列,这样查询可以利用索引前缀进行高效过滤。9.基于范围(或Range)解析:对于根据范围值(如日期、数值区间)查询的场景,创建基于范围的索引(通常是单列索引或组合索引的前缀)非常有效。10.是(或Yes)解析:查询的响应时间只是性能的一部分,如果该慢查询不频繁或不关键,优先级可以较低。四、判断题1.×解析:`EXPLAIN`只能预测执行计划,无法精确预测实际运行时间,实际时间受数据分布、系统负载等多种实时因素影响。2.×解析:并非所有索引都有益,不当的索引(如过多无用索引、维护成本高的索引)可能拖慢写操作或增加存储。索引是优化手段,不是万能药。3.√解析:INNERJOIN返回匹配行,LEFTJOIN返回左表所有行以及右表中匹配的行(或NULL),符合定义。4.√解析:`SELECTDISTINCT`需要数据库进行排序或额外的去重操作,这通常比直接返回结果集消耗更多资源。5.√解析:对于频繁执行且结构稳定的复杂查询,使用存储过程可以避免每次执行时都解析SQL语句,可能提高效率。6.√解析:索引需要占用额外的存储空间,并且每次数据变更(INSERT/UPDATE/DELETE)时都需要维护索引结构,这会带来额外的CPU和IO开销。7.×解析:查询优化器并非万能,其决策基于启发式规则和统计信息,有时可能生成次优计划,需要开发者手动干预优化。8.√解析:分区表可以将大表按特定规则(如时间、区域)拆分,使得查询可以只扫描相关分区,减少数据扫描量,提高性能。9.√解析:`Usingtemporary`表示查询需要创建临时表来存储中间结果,这通常意味着需要排序或去重大量数据,性能开销较大。10.×解析:优化SQL性能不仅指提高查询响应时间,也包括提高吞吐量(单位时间内能处理的请求数量)、降低资源消耗(CPU、IO)、提高系统稳定性和并发能力等。五、简答题1.SQL性能测试是通过模拟实际业务负载,对数据库或应用程序中的SQL语句进行压力测试和瓶颈分析的过程。主要目标是发现SQL执行效率低下的问题,找出性能瓶颈,评估数据库或应用在预期负载下的表现,并提供优化建议,最终提升系统整体的响应速度和稳定性。2.SQL执行计划是数据库查询优化器生成的,描述了数据库将如何执行一条SQL语句的详细步骤和操作。它包括选择的操作(如顺序扫描、索引扫描、嵌套循环、哈希连接等)、涉及的数据表、估算的行数、成本估计以及是否使用了索引等信息。分析执行计划的重要性在于,它能够直观地展示SQL语句执行过程中的资源消耗情况和潜在瓶颈(如全表扫描、低效的连接方式、未使用索引等),是进行SQL性能诊断和优化的核心依据。3.当发现SQL查询执行缓慢时,可以采取以下步骤分析和诊断性能瓶颈:*使用`EXPLAIN`或`EXPLAINANALYZE`命令获取查询的执行计划。*分析执行计划,重点关注`Type`字段(是否全表扫描)、`Rows`字段(估算扫描行数)、`Extra`字段(是否有Usingtemporary,Usingfilesort等)、以及是否访问了索引。*检查查询涉及的表和列是否有关联索引,特别是WHERE、JOIN、ORDERBY、GROUPBY条件中的列。*检查查询是否返回了大量数据,考虑是否可以通过优化WHERE条件减少返回行数,或使用LIMIT。*使用慢查询日志(如果配置了)查找其他执行时间长的类似查询。*监控数据库服务器资源(CPU、内存、IO、网络)使用情况,判断是否是资源瓶颈。*分析数据分布,某些特定的数据组合可能导致查询性能极差。*考虑重写SQL逻辑,例如将复杂的子查询转换为JOIN,或调整JOIN顺序。4.创建索引和不创建索引情况下,数据库在执行数据插入、更新和删除操作时的主要区别在于:*插入(INSERT):创建索引后,插入新行时,数据库除了在数据页插入数据外,还需要在索引页中插入相应的索引键值和数据行指针,增加了写操作的开销和I/O。无索引则只插入数据页。*更新(UPDATE):如果更新了索引列的值,数据库需要找到原数据行(可能需要读索引),更新数据页中的值,然后在索引页中更新对应的索引键值,这通常涉及写索引页和可能的数据页。如果更新非索引列,且索引未重建,则可能不需要写索引。无索引则只更新数据页。*删除(DELETE):删除行时,数据库需要找到并删除数据页中的数据行。如果行被索引,还需要在索引页中找到并删除对应的索引键值,可能涉及索引页的合并或分裂操作。无索引则只删除数据页。*总结:创建索引会加速查询,但显著增加了写操作的成本和复杂性,并占用额外存储空间。不创建索引可以简化写操作,提高写效率,但查询速度会变慢(可能需要全表扫描)。5.在进行SQL查询优化时,除了考虑索引,还有哪些常见的优化手段:*优化查询逻辑:重写复杂的SQL语句,如将难以优化的子查询转换为JOIN,将多个简单查询合并为一个复杂查询(如果中间结果可以缓存),避免在WHERE或JOIN条件中使用函数或运算符(可能导致索引失效)。*优化数据访问:尽量减少返回的数据量,使用`SELECT`列表明确指定所需列(避免`SELECT*`),使用`LIMIT`子句限制结果集大小,尤其是在只需要部分数据的情况下。*优化连接操作:确保JOIN条件列上有索引,选择合适的JOIN类型(INNERJOIN通常比外连接更高效),优化JOIN顺序。*使用合适的聚合策略:对于复杂的聚合查询,考虑使用窗口函数(OVER)替代复杂的子查询,或者利用物化视图。*考虑数据库特性:利用特定数据库系统提供的优化功能,如分区表、物化视图、存储过程等。*调整数据库参数:在某些情况下,调整数据库的内存分配(如缓冲池大小)、并发设置等参数也能改善性能(但这通常超出单纯的SQL优化范畴)。六、SQL优化题1.分析:原查询`SELECTd.dept_name,AVG(s.salary)ASavg_highest_salaryFROMemployeeseJOINdepartmentsdONe.dept_id=d.dept_idJOINsalariessONe.emp_id=s.emp_idGROUPBYd.dept_name;`可能的性能问题:*JOIN顺序:可能先JOIN`employees`和`salaries`,得到所有员工的薪水记录,然后再与`departments`JOIN,导致需要处理大量不相关的员工薪水数据。*缺乏索引:`employees.emp_id`,`salaries.emp_id`,`employees.dept_id`,`departments.dept_id`这些用于JOIN和GROUPBY的列可能没有索引,导致全表扫描或索引扫描效率低。*聚合逻辑:`AVG(s.salary)`是计算平均最高工资,但内层JOIN可能返回每个员工的所有薪水记录,聚合计算量可能较大。优化建议:*优化JOIN顺序:首先在`salaries`表中找到每个部门的最高薪水,然后再与`employees`和`departments`连接。*添加索引:为`salaries(emp_id,salary)`、`employees(emp_id,dept_id)`、`departments(dept_id)`创建索引。优化后的SQL示例:```sqlSELECTd.dept_name,AVG(highest_salary)ASavg_highest_salaryFROM(SELECTs.emp_id,s.salaryAShighest_salaryFROMsalariessWHEREs.salary=(SELECTMAX(s2.salary)FROMsalariess2WHEREs2.emp_id=s.emp_id))ASsubqueryJOINemployeeseONsubquery.emp_id=e.emp_idJOINdepartmentsdONe.dept_id=d.dept_idGROUPBYd.dept_name;--或者使用窗口函数(如果数据库支持)SELECTd.dept_name,AVG(s.salary)OVER(PARTITIONBYd.dept_idORDERBYs.salaryDESCROWSBETWEEN1PRECEDINGAND1PRECEDING)ASavg_highest_salaryFROMemployeeseJOINdepartmentsdONe.dept_id=d.dept_idJOINsalariessONe.emp_id=s.emp_idGROUPBYd.dept_name;```索引建议:```sqlCREATEINDEXidx_salaries_emp_id_salaryONsalaries(emp_id,salaryDESC);CREATEINDEXidx_employees_emp_id_dept_idONemployees(emp_id,dept_id);CREATEINDEXidx_departments_dept_idONdepartments(dept_id);```2.分析:查询`SELECTSUM(total_amount)AStotal_sales,COUNT(*)ASorders_over_1000FROMordersWHEREorder_dateBETWEEN'2023-10-01'AND'2023-12-31';`在`order_date`无索引的情况下可能存在的问题:*全表扫描:`WHEREorder_dateBETWEEN'...'AND'...'`条件无法利用索引,数据库可能需要扫描整个`orders`表来找到符合日期范围的订单。*大量数据计算:`SUM(total_amount)`需要对范围内所有订单的金额进行求和,`COUNT(*)`需要计数所有符合条件的订单,如果数据量大,计算开销会很高。优化建议:*添加索引:为`order_date`列创建索引,特别是如果查询经常按日期范围进行。*优化聚合计算:如果`order_date`索引有效,数据库可能会使用索引扫描或范围扫描来过滤数据,从而只对相关数据进行聚合计算,提高效率。优化后的SQL示例(主要强调添加索引):```sql--保持原查询不变,因为添加索引后数据库会自动利用它SELECTSUM(total_amount)AStotal_sales,COUNT(*)ASorders_over_1000FROMordersWHEREorder_dateBETWEEN'2023-10-01'AND'2023-12-31';--索引建议CREATEINDEXidx_orders_order_dateONorders(order_date);```解释:添加`order_date`索引后,数据库可以使用索引范围扫描(IndexRangeScan)来快速定位`2023-10-01`到`2023-12-31`之间的日期记录,而不是全表扫描。这大大减少了需要读取的数据量和I/O操作,从而加速了`SUM`和`COUNT`的计算。保持原查询不变是因为索引优化是数据库自动完成的。3.分析:查询`SELECTc.customer_name,COUNT(o.order_id)ASorder_countFROMcustomerscLEFTJOINorders

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论