善用Axapta当中的exists join和inner join
来源:互联网 发布:linux war包怎么解压 编辑:程序博客网 时间:2024/05/22 07:49
其实我也发现这个问题了,
但是Junevoful已经说的很详细了,我就补充两点:
1,使用exists join不可以引用第二个表的数据,表示÷这条数据一旦存在于第二个表中,就认为满足条件,但是使用inner join可以引用第二个表的数据,是内关联。
2,大家可以使用Axapta本省带的Sql性能监视器来监视Sql语句的执行效率,启动的方法是:
下面我就引用一下Junevoful的文章,他说的很详细,也很精彩,谢谢他给我带了这么好的文章!
前几天,在做系统优化的时候,居然发现代码当中存在while嵌套循环语句
while select table 1
{
..
while select table2
以前并不太在意,但是既然要系统优化,就只怕没找到东西可以改的。
突然忽发奇想,何不测试一下这样做的系统开销有多大呢?于是写了三个job,进行测试
static void TestInnerJoinUsingWhile(Args _args)
{
...
;
startTime = WinApi::getTickCount();
while select ledgerTrans
where ledgerTrans.AccountNum == accountNum &&
((ledgerTrans.TransDate >= 1/7/2005 &&
ledgerTrans.TransDate <= 31/7/2005))
{
while select projTransPosting
where projTransPosting.Voucher == ledgerTrans.voucher &&
projTransPosting.Account == accountNum
{
...
tmpFRD_LedgerDriDwnContractDtls.insert();
}
}
endTime = WinApi::getTickCount();
duration = endTime - startTime;
Info(int2str(duration));
}
static void TestInnerJoinUsingJoin(Args _args)
{
while select ledgerTrans
where ...
join projTransPosting
where ...
}
static void TestExistsJoinUsingJoin(Args _args)
{
...
while select ledgerTrans
where ...
exists join projTransPosting
where ...
}
结果发现使用嵌套while的时间是4012微秒,Inner join是1986微秒,exists join是1689微秒。
可见在写代码的时候,还是需要按照Best Practice的要求,这样才能获得最好的performance。
- 善用Axapta当中的exists join和inner join
- 善用Axapta当中的exists join和inner join
- EXISTS 和 INNER JOIN 案例
- EXISTS 和 INNER JOIN 案例
- mysql的exists与inner join 和 not exists与 left join 性能差别惊人
- 使用 EXISTS 代替 IN 和 inner join
- exists与inner join的效率问题
- Left Join和Inner Join的体会
- join和inner join的区别
- inner join 和 outer join 的区别
- inner join和left join的区别
- inner join和outer join的区别
- IN、EXISTS和LEFT JOIN,NOT IN、NOT EXISTS和INNER JOIN在存在与不存在的查询效率
- IN、EXISTS和LEFT JOIN,NOT IN、NOT EXISTS和INNER JOIN在存在与不存在的查询效率
- IN、EXISTS和LEFT JOIN,NOT IN、NOT EXISTS和INNER JOIN在存在与不存在的查询效率
- sql - exists/ inner join/ left join
- 【SQL】inner join、outer join、cross join和left join、right join、full join的区别
- left join和right join和inner join的区别
- 动态的得到某个表里的字段的类型和长度
- 判断系统大小端模式
- C#获取进程的信息示例
- 改变Gride的颜色
- 过滤数据源,只显示那些符合条件的数据--Query
- 善用Axapta当中的exists join和inner join
- SEO菜鸟需要掌握哪些基本SEO技巧?
- 使用WinAPI类来查找文件
- 波形捕捉
- 用X++代码来动态的改变表的属性
- C++通用链表构建(二)
- 用X++建立和调用报表(Report)
- ubuntu 9.04 硬盘安装
- 用程序动态控制只有一个或少数几个字段可以改