SQLiteDataReader, last Read() takes 10 seconds
本文关键字:takes seconds last Read SQLiteDataReader | 更新日期: 2023-09-27 18:31:36
我有一个包含大约 2000 万行和 3 列的数据库,目前没有索引进行测试。我的选择语句是这样的:
SELECT *
FROM database
WHERE column COLLATE NOCASE IN ('expr1', 'expr2' .... up to 96 expressions)
command.ExecuteReader()
立即返回,我可以立即阅读该系列。但是最后一个不返回行的Read()
需要 13 秒,这是为什么..?如何改进..?
using (SQLiteDataReader reader = command.ExecuteReader())
{
if(reader.HasRows)
{
while (reader.Read())
{
// READING DB DATA
}
}
}
编辑:将HasRows移出循环
SQLite动态计算结果记录。
在实际匹配的最后一条记录之后,数据库仍必须检查所有剩余记录的匹配项。
索引将使查找速度更快。
(使用"解释查询计划"检查是否使用了某些索引。