一:是否可重用执行计划
1 *ForcePlaceholds
2 FerceLiterals
3 Repeatable
二:聚合函数
Avg()/count()/sum()/minof()/maxof()
Group By
三:多表连接查询
Inner join 内连接是连接两个或者多个表时最常用的连接方式,
Exists join 若关联查询后的结果集中存在数据的话,返回真(true)否则为(false)
Notexists join若关联查询后的结果集中存在数据的话,返回为(false)否则为真(true)
Outer join
四:静态查询
AOT>Queries>创建Query>把表(Map或View)置于DataSources >Field下有个属性
Dynamic:No/
Yes/Unselected
Order By
Group By
Ranges
Relations 属性为Yes,自动创建与上层表的关系。
五:代码创建动态查询
1>
注:可以使用这两个类来为查询添加一个或多个数据源
2>
3>
4>
5>
6>
备注:具体应用
六:复合查询
Composite Query
描述
***
错误:
271,尚未设置查询数据源“InventTable”的字段列表的动态属性。
老出现这个错误,不知哪里错了?
可以用表作为查询的数据源外,CompositeQuery还允许一个查询作为另一个查询的数据源。
(1)
(2)
Find():主要用来查找主键对应的行记录,update==true返回记录可修改,静态方法,update==flase只读记录。
(3)
a>
应用:常用此方法来初始化流水号,单据编号和其它默认值。
b>
c>
前提是validataField()返回为true
d>
保存数据是,触发此方法,判断是否满足保存的条件,此方法的父类方法主要检查字段的合法性。
当super()=true时,触发Insert()和update()方法。
应用:币种必须和发票账户的币种相同
CustTable::find(this.CustInvoiceAccount).Currency=this.CurrencyCode
e>
可用此方法来判断是否有相关数据(交易数据或子表数据)
为true触发delete()方法。
二
(1)
(2)
三
a>
b>
c>
d>
四
表记录缓存 (客户端100条,而AOS服务器为<=2000条)
(a)表的属性CacheLookup值为Found, NonInTTS, FoundAndEmpty
(b)查询条件的where子句中都是用符号(==)匹配。
(c)where后的条件字段有对应的唯一索引组,最好能匹配上主索引(primary Index)。
(d)查询语句是单表查询,即没有使用关联多表查询(join Inquiry).
属性设置项:Found
Found: 若表标准包里的缓存模式是Found,则首先查找客户端缓存,若没有则查找服务器段缓存,若没有则查询数据库服务器。
NonInTTS: 表现为对事务敏感,即事务中的第一次查询必然直接查询数据库而不使用缓存。
FoundAndEmpty:独特之处在于它“不但缓存找到的数据,同时也缓存找不到数据的条件”,也就是说相同的条件如果第一次查不到的话,系统就会缓存起来,第二次再使用该条件查询的时候,系统直接查询缓存并返回空记录,而不会再查询数据库。但是其他缓存类型是在缓存中找不到记录的情况下,会进一步查询数据库。
Found和FoundAndEmpty对事务不敏感,即在事务的内外层都可以使用缓存。
注:
DisableCache方法会阻止表使用缓存,直接插叙数据库,同时若查询语句使用的是字段列表的话,这个方法会阻止查询语句的有限字段列表被展开成所有字段。
整表缓存EntireTable
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22286856/viewspace-1119116/ ,如需转载,请注明出处,否则将追究法律责任。