大数据量的表,一个数组,如何快速的筛选出这些数据?急!

joeyxiaobin 2011-09-13 04:29:13
环境:
ORACLE数据库中有张表,表名article,该表有160个字段,主键为字段article_id,大约有150万条数据.现在有个长度为500的数组array1,这个数组包含了500个article_id。
问题:
在C#中,我要查出article表中的数据,条件是article_id在数组array1中,考虑到article表数据量非常大,如何能高效地查出数据呢 ?
望大家不吝赐教,非常感谢!

...全文
235 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
krenyelang 2011-09-14
  • 打赏
  • 举报
回复
使用类型化数据集进行操作试下……
jointan 2011-09-13
  • 打赏
  • 举报
回复
先插入临时表,内连接临时表
joeyxiaobin 2011-09-13
  • 打赏
  • 举报
回复
数组的数据不是来自数据表,所以还不方便使用存储过程。
真希望有人能给个好建议,万分感谢!
Lemon2050 2011-09-13
  • 打赏
  • 举报
回复
500条的话,应该能一起查出来的,大不了,你50一查,分10次。你先把数字拼成字符串in (id1,id2,id3,.....id500)
查的时候,用:
select 字段1,字段2,字段3 from tb where ID in (id1,id2,id3,.....id500)
萧炎 2011-09-13
  • 打赏
  • 举报
回复
要高效的话用
存储过程
joeyxiaobin 2011-09-13
  • 打赏
  • 举报
回复
回2楼:非常感谢你的答复,有考虑过这样的方法,但是对于大数据量的表用in方法速度会比较慢,而且数组的长度不一定500,如果有3000的长度呢?有没有别的方法?
还有这样的情况:数据表主键有2个,第一主键为article_id,第二主键为time_start,我有2个数组,分别为article_id[2000],time_start[2000],如何筛选出article_id在数组article_id[2000],time_start在time_start[2000]中,在C#中如何实现呢 ?
请高手回答,谢谢!
至尊贱客 2011-09-13
  • 打赏
  • 举报
回复
才500个 就拼接字符串 用 in 就行了


string strID="(";
int i = 0;
foreach (DataGridViewRow dgvRow in dgvMain.Rows)
{
if (Convert.ToBoolean(dgvRow.Cells[0].Value) == true)
{
strID +=(dgvRow.Cells[1].Value.ToString()+",");
i++;
}
}
strID += "-1)";
if (i == 0) return;

if (MessageBox.Show("是否确定删除?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No)
{
return;
}



if (db.exec("delete from smsReceiveList where smsReceiveID in " + strID) > 0)
{
MessageBox.Show("删除成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧