c# - 使用c#进行多线程搜索

标签 c# multithreading

我想在 select 语句中搜索超过 15000 个值,如下所示:

从表A中选择*,其中id在(1,2,3......16000)

我可以使用线程(例如 3 个左右)并在不同的 select 语句中划分 15000 个值吗?

  1. 从 tableA 中选择 *,其中 id 在 (1,2,3......5000)
  2. 从 tableA 中选择 *,其中 id 在 (5001....10000)
  3. 从 tableA 中选择 *,其中 id 在 (10001....15000)

并并行运行这 3 个选择语句。

最佳答案

是的,但真正的问题是为什么?

类似这样的事情可能会让你开始:

var itms = new List<YourDataClass>();

var thr1 = new Thread(new ThreadStart(delegate()
{
    // select code
    // populate itms
}));
var thr2 = new Thread(new ThreadStart(delegate()
{
    // select code
    // populate itms
}));
var thr3 = new Thread(new ThreadStart(delegate()
{
    // select code
    // populate itms
}));

thr1.Start();
thr2.Start();
thr3.Start();

但是,也就是说,如果您的 ID 是整数并且(根据您的样本)范围为 IN值是连续的,您可能需要切换到 where id > 1 and id < 16000风格。这可能会产生更好的性能。

关于c# - 使用c#进行多线程搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504609/

相关文章:

c++ - 好友类 'has no member named...'

java - 同一对象上的同步块(synchronized block)是否真的阻止其他线程执行该 block ?

C# 6.0 => 运算符

c# - 尝试将 JSON 转换为 [Key,Value] 字典

python - 子线程内的多处理

multithreading - 使用IPC::open2传输大文件

java - 线程(在类中)和 Activity 之间的 Android 消息传递

c# - 设置工作线程以持续检查对象的 bool 值

c# - 在 LINQ 查询中分组

c# - 使用 Autofac 注册通用接口(interface)和类