使用的是DataTable中的Select方法进行查询。
现在有个问题,就是需要查询两个表才能检索到一条记录。
由于不能使用join这种类似数据库的方法,所以只有先查出一个表的数据然后作循环查另一个表。
因此效率很低。
不知道大家有什么好的方法?现在系统做产品测试,转成数据库的方法就不要提了,风险太大,被否决了。
我现在只想知道时候还有优化的可能
现在有个问题,就是需要查询两个表才能检索到一条记录。
由于不能使用join这种类似数据库的方法,所以只有先查出一个表的数据然后作循环查另一个表。
因此效率很低。
不知道大家有什么好的方法?现在系统做产品测试,转成数据库的方法就不要提了,风险太大,被否决了。
我现在只想知道时候还有优化的可能
解决方案 »
- [C# LIST] 可以直接输出List中的所有元素吗?
- combobox 的事件
- MemoryStream为什么这样不能读出数据
- Socket未指定端口bind后,怎么得到系统分配的端口是多少?
- 求教windows系统里格式化u盘为linux ext3.哪位高手愿意做赏金猎人?
- 为什么用.Net的Socket写的聊天程序,智能在一台机器上聊?两台机器就连不上了哪?
- vs2010 CTRL+. 快捷键 是在什么命令上设置的?
- mapxtreme的桌面程序在客户端怎么连接到服务器的数据
- 请教各位大虾:vs上的编译问题
- 请教ERP是什么???
- 请问:如何在编辑TextBox的内容后,获得回车时引发一个事件?
- 在C#中如何在只打开一个窗口?
我在SQL查询分析器中看两表关联的查询语句的执行计划也是分两次扫描,先找出表1中符合条件的行再去表2中扫描匹配的行。那你在DataTable中可以按照这个思路这样试试,先在表1中查询出符合条件的行,然后根据这些行的数据动态生成查询表2所需要的SQL语句,在去表2执行,可能效率会高一些吧
比如两个表A,B要查询 这样的语句select B.* from A,B where A.id = B.id and A.id > 5 and B.id < 20可以先这样查询A,select id from A where id > 5,假如查询出符合条件的id有3个(6,7,10)
再生成查询B的SQL,select B.* from B where id < 20 and id in(6,7,10)查询得到最后的结果