【发布时间】:2011-08-09 08:10:58
【问题描述】:
问:
我有两个查询,每个都返回一个DataTable。我想返回另一个DaTaTable,因为(第一个 DataTable 中存在什么而不存在(NOT IN)第二个 DataTable)。
我的查询:
编辑:我把它概括为:
1-DT1:
DataTable dt1 = cc1assiscrsevalDAL.GetAll(int.Parse(Session["course_prof"].ToString()), 0);
2-DT2:
DataTable dt2 = cc1assiscrsevalDAL.GetConfirmedEval(int.Parse(Session["course_prof"].ToString()));
注意:batch_no,crsnum,lect_code 是复合主键
最好的方法是什么?(明智的表现)。 我也想用 LINQ 来做这件事。(如果可能的话)。
【问题讨论】:
-
任何时候使用 NOT EXISTS 都会对性能造成影响,具体取决于表的大小,因为 NOT EXISTS 会进行完整的表扫描。
-
@Tim:你能以任何方式证明这一点吗?这表示 NOT EXISTS 是 优化的,因为它是一个半连接 dba.stackexchange.com/questions/4009/… 或者这里是为 MySQL、SQL Server、Oracle 探索的:explainextended.com
-
@gbn - 我基于过去合作过的众多 DBA 告诉我的信息。显然这并不完全正确(就像许多其他笼统的陈述一样)。但是,我仍然认为,最好尽可能避免 NOT EXISTS。
-
@just_name: 哪些表是 EXISTS 和 NOT EXISTS?
-
@Tim:你想你想要的:但不要在公共论坛上发布这样的垃圾......