wince 系统下,sqlite插入慢!?

duapy 2010-11-09 10:49:45
现在wince系统下,用sqlite插入9000条数据,启动事务的情况下,需要时间30s左右,时间太长了啊,请各位帮忙分析一下可能是什么原因啊? 代码如下:
BOOL CDataBaseOpr::AddBlackListArray(BlackList * pBlackList , unsigned long ListCount)
{
//BlackList( CARDNO CHAR(32), CARDNumber CHAR(10) )

unsigned char ASC_CARDNO[100]="\0", ASC_CARDNumber[50]="\0";

CString strCARDNO, strCARDNumber;
unsigned long i;
m_db.execDML(L"begin transaction");//开始一个事务
try
{
for(i=0; i<ListCount; i++)
{

hex_asc( (unsigned char *)pBlackList[i].CARDNO, ASC_CARDNO, 16);

hex_asc( (unsigned char *)pBlackList[i].CARDNumber, ASC_CARDNumber, 5);

strCARDNO=ASC_CARDNO;

strCARDNumber=ASC_CARDNumber;

try
{
CString SqlBuf;

SqlBuf.Format(L"insert into BlackList( CARDNO , CARDNumber ) Values('%s' , '%s')",
strCARDNO, strCARDNumber);

m_db.execDML( SqlBuf.GetBuffer( SqlBuf.GetLength() ) );

}catch(CppSQLite3Exception ex)
{
AfxMessageBox(ex.errorMessage());
return FALSE;
}
}
m_db.execDML(L"commit transaction");
}catch(CppSQLite3Exception ex)
{
m_db.execDML(L"rollback transaction");
return FALSE;
}
return TRUE;
}
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
duapy 2010-11-10
  • 打赏
  • 举报
回复
谢谢各位,我的硬件暂时没法提升了,先这样用吧,结贴了!
duapy 2010-11-09
  • 打赏
  • 举报
回复
谢谢
内存64MB的 ,存储器是NANDFALSH的
另外 9000*4=36000 理论36秒,呵呵 少了个0;
要是硬件原因,那我这数据库就没办法提升了吗 ?
wwwwb 2010-11-09
  • 打赏
  • 举报
回复
内存多大?
wwwwb 2010-11-09
  • 打赏
  • 举报
回复
ID有索引,
1秒=1000毫秒
9000*4=3600 理论3.6秒,
与cpu有一定关系,与硬盘速度关系大一些,因为要写入硬盘
duapy 2010-11-09
  • 打赏
  • 举报
回复
wwwwb 您好!
m_db.execDML(L"create table BlackList( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ,CARDNO CHAR(32), CARDNumber CHAR(10) )");

这个表没有建索引,数据库插入9000条数据大概是200k左右,另外我测试插入一条数据的时间是3-4ms的样子,与cpu是400Mhz的有没有关系 ?
wwwwb 2010-11-09
  • 打赏
  • 举报
回复
表中是否有其它数据,索引情况如何,数据库有多大,vacuum一下试试
ACMAIN_CHM 2010-11-09
  • 打赏
  • 举报
回复
[Quote]我又找到了一种sqlite 内存数据库的方法,还没试,不知道这样会提高多少效率?[/Quote]这个不是效率的提高,是减少了对磁盘IO的时间占用,因为你的记录表是存放在内存中。 但内存数据库显然受内存的限制。断电后数据会消失。
iihero_ 2010-11-09
  • 打赏
  • 举报
回复
楼主的方案已经是最快的方案了。只能跟硬件有关系。
duapy 2010-11-09
  • 打赏
  • 举报
回复
谢谢两位前辈!

我又找到了一种sqlite 内存数据库的方法,还没试,不知道这样会提高多少效率?
ACMAIN_CHM 2010-11-09
  • 打赏
  • 举报
回复
速度不算慢了。
你可以检查一下你的这个 表上的索引情况。过多的索引会导致插入效率下降。
wwwwb 2010-11-09
  • 打赏
  • 举报
回复
呵呵,是,应该36秒,你的执行时间30s,速度还不错,估计应该从硬件着手,比如换高速硬盘、加内存等待

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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