1

我有一个大约有 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 移出循环

4

1 回答 1

1

SQLite 即时计算结果记录。

在实际匹配的最后一条记录之后,数据库仍然必须检查所有剩余记录是否匹配。

索引将使查找更快。
(使用EXPLAIN QUERY PLAN检查是否使用了某些索引。)

于 2013-09-17T07:03:08.650 回答