论文部分内容阅读
摘 要:数据库最大的特点是查询的便捷性,几乎所有的数据库操作都是在查询的基础上进行的。查询优化提高了数据库的查询速度,也给数据的维护带来了方便。本文对 数据库查询与统计进行分析。
关键词:数据库;查询;统计
引言
数据库性能问题一直是决策者及技术人员共同关注的焦点,影响数据库性能的一个重要因素就是SQL查询语句的效率。SQL 是结构化查询语言(Structured Query Language)的缩写,SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制等部分,主要应用于关系数据库,实现了关系数据库中的数据检索。
一、数据库查询优化技术概述
1.1 自动查询优化技术
SQL server的自动查询优化技术由基于开销的查询优化器来进行的,当提交一个SQL语句时,这个语句只是表明想要从数据库中得到什么样的结果,对于怎么样得到结果,SQL语句不会涉及。给予开销的查询优化器以CPU的使用率和磁盘I/O作为判断依据来为每个可能的执行规划赋予开销值,然后优化器会选择开销值最小的执行规划来执行。
1.2 索引技术
在SQL server数据库中,索引是一个物理性的数据库结果,是单独存在的,在检索数据的时候,对磁盘的读写都需要占用很大的开销,如果缺少了索引,就必须要对磁盘进行识别。有了索引的帮助,查询数据只需要索引页面就行,索引能够很大程度上提高查询检索速度。因此,要拥有查询方便快捷的数据库,索引是必不可少的。
1.3影响查询效率的因素
SQL server数据库系统在处理查询计划时,首先要系统对词法和语法进行检查,检查完之后将其递交给SQL server的查询优化器,优化器会对数据是否存在和有效进行索引,再进行扫描、检索和连接,这个计划的执行是在同一时间进行的,通过分析来对计划的执行进行评价,通过开销最小的计划来实现,然后预编译模块会对语句进行处理,最后生成了查询规划,查询规划会在恰当的时间提交给系统,系统会将执行结果反馈给客户。在SQL server数据库中影响查询效率的因素主要有五点:第一,当没有索引或者索引无法使用的时候。因为索引能够绕开全表扫描,能够有效提高查询速度。第二,在进行查询工作的时候,缺少计算列的时候是无法进行优化查询的。第三,查询出来的数据量很大的时候也会影响查询效率。第四,返回了不必要的行和列。第五,如果查询的时候语句选择不合理,就无法进行优化。语句选择不合理的情况主要有查询条件中的操作不合适,多个选择条件进行查询时,条件的次序不是最优。
二、数据库的查询与统计优化方法
2.1 建立索引
并不是所有的数据库都有索引,因为很多数据库不需要使用索引,索引是否应该存在有一些争议,究其原因,主要是数据库系统当中添加索引之后,再对数据库进行查询的时候,就无法对数据库中的所有内容进行扫描和查询,只能在索引范围之内进行查询了。基于这样一种情况,从性能角度来说,目标表记录的总数是固定的,因此,只有当查询结果比较少的时候,索引才会有较高的查询效率,如果查询结果很多,那么索引会导致查询效率降低,这也是索引的存在有争议的原因。在实际情况中,数据库系统要根据应用目的和实际状况进行合理配置,那些记录数较多的数据库应该要建立索引,从而有效提高查询效率。
2.2 SQL 查询语句的优化策略
一个数据库系统的反应速度的快慢,最为直接的表现就是优化器的计算方法。另外,优化器的测量和查询表中的其他内容和服务存在关联。由此可见,让优化器选择恰当的索引和表达的连接手段是十分重要的。
2.3 避免全表扫描
一般情况下,数据库在进行查询或者select语句的处理过程中,会扫描全表,在执行的时候,如果出现数据更新和数据删除的情况也会扫描全表。如果添加索引的话,能够让数据访问的速度得到提升。而要建立科学合理的索引,那就必须要充分了解数据,然后在实践中不断进行优化。
2.4 合理使用索引
索引在数据库中占有重要的地位,其对查询速度的提高有着十分明显的效果。但是创建和使用索引的时候,索引都必须跟系统的查询需求一致。
2.5 选择恰当的操作符,提高查询效率
应该要尽可能的少用(NOT)IN,而使用(NOT)EXISTS,此外,还要尽量避免使用OR运算符,>和<可以用>=和<=来代替,同时,对于诸如IS NULL和 IS NOT NULL等操作也要尽量避免,另外,还要注意LIKE操作符的正确使用。
2.6 避免使用SELECT进行查询
在使用SQL语句的时候,一定要特别注意书写细节,避免使用SELECT来进行查询,在进行筛选的时候,尽量避免使用表达式,而要用常量来代替,而且如果表中数据量很大的话,要特别注意WHERE子句中的筛选条件的顺序,因为这会直接影响查询效率。
2.7 SQL语句对索引的利用
在实际的应用中,聚集索引的效率要比非聚集索引要高,聚集索引能够将数据在物理顺序上进行排列,计算在其中存在一些重复值,但是仍然集中在一起,这就能够将查询范围锁定在一个较小范围之内,可以有效提高扫描速度。
2.8 合理使用临时表
针对那些数据量很大,但是数据变化不是很多的数据库表,可以将子集排序,同时创建临时表,这就有效防止了多重排序操作,提高了查询速度。
2.9 建立视图
建立视图可以帮助人们更方便的进行数据查询等操作,因为视图可以让人们重点关注他们想要了解和感兴趣的数据和信息。在建立视图的时候一定要控制视图的规模,如果视图的规模比基本表要小,那么,查询速度会大大提高。
三、 SQL查询安全监控系统
SQL数据库系统的安全性也是人们关注的焦点,如果发现用户进行非法操作,系统就会自行进行处理。在监控攻击行为的时候,系统会对非法用户发出警告,同时还会对相关信息进行记录,在必要的情况下,还可能会阻断网络。在SQL系统中,有信息获取、分析机和控制台三个子系统,这三个系统之间会存在交互工作。
3.1 主机来实现报警
开启探头之后,可以独立监控数据库,给予数据库中的相关信息,把信息根据一定的规则进行分析,通过分析,判断数据库是否存在安全隐患,并且确定是否需要发出危险警报。如果某台的计算机在进行非法操作的时候,系统会记录该计算机的IP地址,并且按照上述步骤进行操作,控制台一旦收到危险警报,就会根据指令来执行阻断指令。分析机把阻断指令传递给探头,探头会调用SQL server数据库系统中的API函数,从而对进行非法操作的计算机的操作行为进行拦截,保证数据库中的数据和信息不會被泄漏、丢失和破坏。
3.2 下发命令
当控制台发出指令之后,指令会传递给分析机和信息获取部分,最后会通过对模块的响应来实现指令的操作。
3.3 传送相关数据
探头、分析机和控制台三者之间的数据传递都是通过端口来进行的,要有效传送数据和信息,这些信息的格式是要统一的,如果不是统一的标准格式,信息无法传递和接收。
四、结束语
数据库系统是一个很庞大的系统,在应用过程中,数据库的运行速度和运行效率是十分重要的,有些数据库运行速度慢、运行效率低,严重影响了数据库的性能。因此,在设计和开发数据库的时候,一定要将数据库的运行速度和效率放到重要位置。
参考文献:
[1]朱敏英.数据库SQL查询语句优化研究[J].信息与电脑(理论版),2013(06):117-119.
[2]苗雯娟.MS SQL Server数据库查询优化技巧研究[J].企业导报,2012(16):274.
关键词:数据库;查询;统计
引言
数据库性能问题一直是决策者及技术人员共同关注的焦点,影响数据库性能的一个重要因素就是SQL查询语句的效率。SQL 是结构化查询语言(Structured Query Language)的缩写,SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制等部分,主要应用于关系数据库,实现了关系数据库中的数据检索。
一、数据库查询优化技术概述
1.1 自动查询优化技术
SQL server的自动查询优化技术由基于开销的查询优化器来进行的,当提交一个SQL语句时,这个语句只是表明想要从数据库中得到什么样的结果,对于怎么样得到结果,SQL语句不会涉及。给予开销的查询优化器以CPU的使用率和磁盘I/O作为判断依据来为每个可能的执行规划赋予开销值,然后优化器会选择开销值最小的执行规划来执行。
1.2 索引技术
在SQL server数据库中,索引是一个物理性的数据库结果,是单独存在的,在检索数据的时候,对磁盘的读写都需要占用很大的开销,如果缺少了索引,就必须要对磁盘进行识别。有了索引的帮助,查询数据只需要索引页面就行,索引能够很大程度上提高查询检索速度。因此,要拥有查询方便快捷的数据库,索引是必不可少的。
1.3影响查询效率的因素
SQL server数据库系统在处理查询计划时,首先要系统对词法和语法进行检查,检查完之后将其递交给SQL server的查询优化器,优化器会对数据是否存在和有效进行索引,再进行扫描、检索和连接,这个计划的执行是在同一时间进行的,通过分析来对计划的执行进行评价,通过开销最小的计划来实现,然后预编译模块会对语句进行处理,最后生成了查询规划,查询规划会在恰当的时间提交给系统,系统会将执行结果反馈给客户。在SQL server数据库中影响查询效率的因素主要有五点:第一,当没有索引或者索引无法使用的时候。因为索引能够绕开全表扫描,能够有效提高查询速度。第二,在进行查询工作的时候,缺少计算列的时候是无法进行优化查询的。第三,查询出来的数据量很大的时候也会影响查询效率。第四,返回了不必要的行和列。第五,如果查询的时候语句选择不合理,就无法进行优化。语句选择不合理的情况主要有查询条件中的操作不合适,多个选择条件进行查询时,条件的次序不是最优。
二、数据库的查询与统计优化方法
2.1 建立索引
并不是所有的数据库都有索引,因为很多数据库不需要使用索引,索引是否应该存在有一些争议,究其原因,主要是数据库系统当中添加索引之后,再对数据库进行查询的时候,就无法对数据库中的所有内容进行扫描和查询,只能在索引范围之内进行查询了。基于这样一种情况,从性能角度来说,目标表记录的总数是固定的,因此,只有当查询结果比较少的时候,索引才会有较高的查询效率,如果查询结果很多,那么索引会导致查询效率降低,这也是索引的存在有争议的原因。在实际情况中,数据库系统要根据应用目的和实际状况进行合理配置,那些记录数较多的数据库应该要建立索引,从而有效提高查询效率。
2.2 SQL 查询语句的优化策略
一个数据库系统的反应速度的快慢,最为直接的表现就是优化器的计算方法。另外,优化器的测量和查询表中的其他内容和服务存在关联。由此可见,让优化器选择恰当的索引和表达的连接手段是十分重要的。
2.3 避免全表扫描
一般情况下,数据库在进行查询或者select语句的处理过程中,会扫描全表,在执行的时候,如果出现数据更新和数据删除的情况也会扫描全表。如果添加索引的话,能够让数据访问的速度得到提升。而要建立科学合理的索引,那就必须要充分了解数据,然后在实践中不断进行优化。
2.4 合理使用索引
索引在数据库中占有重要的地位,其对查询速度的提高有着十分明显的效果。但是创建和使用索引的时候,索引都必须跟系统的查询需求一致。
2.5 选择恰当的操作符,提高查询效率
应该要尽可能的少用(NOT)IN,而使用(NOT)EXISTS,此外,还要尽量避免使用OR运算符,>和<可以用>=和<=来代替,同时,对于诸如IS NULL和 IS NOT NULL等操作也要尽量避免,另外,还要注意LIKE操作符的正确使用。
2.6 避免使用SELECT进行查询
在使用SQL语句的时候,一定要特别注意书写细节,避免使用SELECT来进行查询,在进行筛选的时候,尽量避免使用表达式,而要用常量来代替,而且如果表中数据量很大的话,要特别注意WHERE子句中的筛选条件的顺序,因为这会直接影响查询效率。
2.7 SQL语句对索引的利用
在实际的应用中,聚集索引的效率要比非聚集索引要高,聚集索引能够将数据在物理顺序上进行排列,计算在其中存在一些重复值,但是仍然集中在一起,这就能够将查询范围锁定在一个较小范围之内,可以有效提高扫描速度。
2.8 合理使用临时表
针对那些数据量很大,但是数据变化不是很多的数据库表,可以将子集排序,同时创建临时表,这就有效防止了多重排序操作,提高了查询速度。
2.9 建立视图
建立视图可以帮助人们更方便的进行数据查询等操作,因为视图可以让人们重点关注他们想要了解和感兴趣的数据和信息。在建立视图的时候一定要控制视图的规模,如果视图的规模比基本表要小,那么,查询速度会大大提高。
三、 SQL查询安全监控系统
SQL数据库系统的安全性也是人们关注的焦点,如果发现用户进行非法操作,系统就会自行进行处理。在监控攻击行为的时候,系统会对非法用户发出警告,同时还会对相关信息进行记录,在必要的情况下,还可能会阻断网络。在SQL系统中,有信息获取、分析机和控制台三个子系统,这三个系统之间会存在交互工作。
3.1 主机来实现报警
开启探头之后,可以独立监控数据库,给予数据库中的相关信息,把信息根据一定的规则进行分析,通过分析,判断数据库是否存在安全隐患,并且确定是否需要发出危险警报。如果某台的计算机在进行非法操作的时候,系统会记录该计算机的IP地址,并且按照上述步骤进行操作,控制台一旦收到危险警报,就会根据指令来执行阻断指令。分析机把阻断指令传递给探头,探头会调用SQL server数据库系统中的API函数,从而对进行非法操作的计算机的操作行为进行拦截,保证数据库中的数据和信息不會被泄漏、丢失和破坏。
3.2 下发命令
当控制台发出指令之后,指令会传递给分析机和信息获取部分,最后会通过对模块的响应来实现指令的操作。
3.3 传送相关数据
探头、分析机和控制台三者之间的数据传递都是通过端口来进行的,要有效传送数据和信息,这些信息的格式是要统一的,如果不是统一的标准格式,信息无法传递和接收。
四、结束语
数据库系统是一个很庞大的系统,在应用过程中,数据库的运行速度和运行效率是十分重要的,有些数据库运行速度慢、运行效率低,严重影响了数据库的性能。因此,在设计和开发数据库的时候,一定要将数据库的运行速度和效率放到重要位置。
参考文献:
[1]朱敏英.数据库SQL查询语句优化研究[J].信息与电脑(理论版),2013(06):117-119.
[2]苗雯娟.MS SQL Server数据库查询优化技巧研究[J].企业导报,2012(16):274.