- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
eXtremeSQL用户指南
eXtremeSQL查询优化
对于执行SQL语句建立一个最优计划是很复杂且有挑战性工作。SQL优化器分析SQL查询发送到数据库,并选择最好的搜索访问数据库的策略。
有两个SQL优化类:基于开销和基于规则。基于磁盘的数据库通常是用基于开销优化。使用基于开销优化,查询优化很依赖数据的分布。通常情况下采用优化器提供的样板和由数据库引擎提供的统计数据,并收集统计信息自身,去计算执行计划的后选开销。因此,建立最优的计划是一个非常占用CPU的操作和本质上不可预测,在优化程序所花费的时间各不相同的查询来查询和执行计划可以改变从一个调用到另一个数据分布变化,CPU使用率被认为是一个很好的权衡,由于diskaccess成本相对较高。
对于实时和嵌入式系统可预知的性能是关键,一个基于规则的优化器,像eXtremeSQL使用是更适合地。此外,eXtremeSQL优化器使得应用程序可以专注它们自己的执行计划。例如,优化器没有重新排序表中查询:查询中指定的顺序表被执行。其中一些可用于查询中使用的其他重要规则优化包括:
·如果可能,使用索引.
·每个表都被分配一个序号,代表从它在列表中的位置。
·搜索意味着分成列和一组列来排序,因此首先表达式用最小序号访问表来检查。
·子查询执行优化是通过检查子查询的依赖表达.子查询的结果被保存并且仅当子查询表达从封闭范围引用字段时重新计算。
对于eXtremeSQL中更多的关于查询优化请见“章节4:eXtremeSQL查询优化”。
章节2:SQL和eXtremeSQL
本章涵盖SQL和eXtremeSQL之间的。SQL(结构化查询语言)是由IBM70年代中期开发作为来获得进出数据库系统信息一种方式。它名字所暗示的相反,SQL不仅查询语言,而且是操纵已在数据库中信息(新增,变更或删除)语言。SQL是一种性语言,而传统的编程语言(C / C + +中,等)是程序语言。实际上来说,这意味着SQL有没有控制语句(例如)。SQL被数据库供应商广泛采用,并已由ANSI和ISO组织制度化为标准。 SQL技能得知,一个数据库系统可以在很大程度上结转到其他SQL功能的数据库系统,虽然几乎每个厂商实现专有扩展的语言开发自己的数据库技术的能力。在ANSI SQL标准已经发展多年,与SQL - 89标准的开始,其次由SQL - 92,以及最近的SQL - 99标准。 SQL DML语句eXtremeSQLSQL - 89标准。SQL语言分类指定eXtremeSQL语句语法:应注意下面的语法公约:expression 非终结 NOT 终结 | 或者(不相交的选择) [NOT] 可选 {1..9} 0或更多次重复 句法
DML句法如下:
statement::=
query-statement | update-statement | insert-statement | delete-statement
query-statement::= select-statement {set-op select-statement }
[ORDER BY columns-ref-list] [LIMIT expression [,expression]] [FOR
UPDATE]
select-statement::= SELECT [ALL | DISTINCT] [columns-list] FROM tablelist
[WHERE expression] [group-by]
update-statement::= UPDATE table SET assignments [WHERE expression
insert-statement::= INSERT INTO table [(fields-list)] insert-data
insert-data::= VALUES expressions-list | select-statement
delete-statement::= DELETE FROM table [WHERE expression]
columns-list::= * | column-spec {, column-spec}
column-spec::= table.* | expression [[AS] identifier]
column::= [table .] identifier
table-list::= table-spec {, table-spec}
table-spec::= table {join-kind table [USING fields-list] } [[AS]
identifier]
table::= {package .} identifier
j
文档评论(0)