我在C#中启动一个线程进行查询,由于数据库很大,查询的时间可能会很长,在这个过程中,有可能因为程序的需要去中断这个查询,用直接abort线程是不行的,即使线程退出了,查询也要执行完了才退出,这样很占用资源。哪位大侠教教在查询中如何停止查询并释放一起资源。PS.我用的mysql数据库,不过这个我想不是重点,对各种数据库应该都一样

解决方案 »

  1.   

    数据库是并发查询的, 用sql 语句停止查询吧  
      

  2.   

    好象没办法,如果mysql的话,需要先show processlist; 查到那条查询对应的ID
    然后kill id;
    才可以
      

  3.   

    直接关闭数据库连接这样是不行的,C#应用程序那边是断开连接了,但是数据库还在处理;
    4楼的办法在mysql是可行的,但是又需要维护一个查询ID列表,而且又涉及到多线程,kill id之后的状态如何返回给应用程序也是个麻烦,只能再去扫描一次ID列表,总之不是很理想;
    6楼:太粗暴了,数据库不只为我一个线程服务的。
      

  4.   

    MY SQL不清楚SQL Server可以这样,在长查询执行前通过:select  @@SPID 取得该连接的进程ID,由另一个连接执行
    KILL ID即可.我们一般在需要独立操作数据库时,用KILL来清除所有的客户连接
      

  5.   

    谢谢jointan的回复,我目前在mysql中也是这样处理的,维护一个ID列表,需要中断的时候直接kill id,看样子没有更简单的方法了。