表内记录大约5万多条我想删除前1000条用什么方法速度能比较快?
我用的方法是:
for (i=0;i<m_deletename.GetSize();i++)
{
    strSQL="DELETE FROM "+m_filenamesave+" WHERE datatime = '"+((CGtry*)m_deletename.GetAt(i))->m_n+"'";
    m_pConnection->Execute((_bstr_t)strSQL,&RecordsAffected,adCmdText);
}
但删除起来速度太慢了,有什么更好的方法吗?
m_deletename中存储的是要删除表的前1000条记录的datatime。

解决方案 »

  1.   

    sql语句先排序,然后删除前1000条...
      

  2.   

    在datatime 字段上建立索引。
      

  3.   


    你这个表中的【datatime】字段是字符型吧?
    那为什么不用【时期时间】类型?
    如果用【日期时间】类型的话,一条命令即可;而现在你使用了 1000 条命令。
      

  4.   


    你的【datatime】就是 字符型,在 ACCESS MDB 中,日期型要使用 ## 号;建议你改成【日期时间】类型,即【DateTime】类型。
      

  5.   

    排序等delete top 1000 * from delfile一条语句来做·
      

  6.   

    delete top 1000 * from delfile怎么使用?
    strSQL="delete top 1000 * from 矿号:"+dlg.m_inputmine+"队号:"+dlg.m_inputteam+"井号:"+dlg.m_inputwell;
    m_pConnection->Execute((_bstr_t)(strSQL),&RecordsAffected ,adCmdText);
    调试到的时候显示Unhandled exception........的错误呀
      

  7.   

    哈哈,使用一个循环来删除1000条数据能不慢那才怪了,7楼的SQL语句没见过,不知道能不能执行,如果可以的话使用一个不能重复值的主键,然后找到第1000个的值,取出来作为删除取值用就行了,肯定比你的快,有没有更好的一条sql语句能解决我就不知道了,sql我弱智.
      

  8.   

    直接 delete top 1000 * from delfile 
      

  9.   

    会不会我的数据库不支持delete top的语法?
      

  10.   

    不知道sql语句怎么写
    楼主可以这样用记录集UpdateBatch的方式
    先打开记录集(注意打开方式要支持UpdateBatch)
    然后delete前 N条记录(调用的是记录集的delete方法,一个循环)
    最后UpdateBatch这样应该会快一点
      

  11.   

    不知道sql语句怎么写 
    楼主可以这样用记录集UpdateBatch的方式 
    先打开记录集(注意打开方式要支持UpdateBatch) 
    然后delete前 N条记录(调用的是记录集的delete方法,一个循环) 
    最后UpdateBatch 这样应该会快一点
    应该怎么写呀?
    谢谢啊。
      

  12.   

    delete top 1000 * from delfile desc by datetime按时间降序,不会联系我
      

  13.   

    _RecordsetPtr m_pRecordset;
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->Openm_pRecordset->delete(循环)m_pRecordset->Updatebatch()你的前1000条不知道有什么规律
      

  14.   

    delete top 1000 * from delfile 
      

  15.   

    _RecordsetPtr m_pRecordset; 
    m_pRecordset.CreateInstance("ADODB.Recordset"); 
    m_pRecordset->Open m_pRecordset->delete(循环) m_pRecordset->Updatebatch() 你的前1000条不知道有什么规律
    我的前一千条是字符型的,是按字符型排序的。
      

  16.   

    DELETE TOP 1000 FROM MyTable ORDER BY MyField