我有一个包含大约80000条记录(包含7列)的sqlite密码数据库。它目前在搜索记录方面花费了太多时间。我需要一种基于某些标准(需要索引等)来搜索1个或多个记录的优化方法,以便缩短搜索时间。有没有人知道如何着手实现这个目标?急需急救。 :(SQLite数据库花费太多时间检索(或获取一些数据)
编辑: 我使用SQLite加密API,因为我需要存储在SQLite数据库加密的数据我已经设置了编译键和所使用的加密是AES - 256我还创建的索引上。每个表都在我的数据库中,但我的搜索速度不是很快,需要的时间太多了,需要尽快解决这个问题。用户点击一个文本字段就可以了。总结这个问题,让我告诉你流程。
我有2个文本字段和一个包含〜80k条记录和7列的表格 当我在field1中键入任何内容时,将使用field1的内容在表上进行搜索。因此,可以说我在我的field1中键入'a',然后选择查询将返回列1中包含'a'字母的所有记录。所以,只要我输入字母,表格就会被搜索到。 直到现在没有问题。它没有任何时间延迟地返回记录。查询是:
SELECT DISTINCT <COL1> COLLATE NOCASE as <COL1> from <TABLE_NAME> where <COL1> like '%ab%' LIMIT 0,501
现在,如果我点击2场,然后我看到场2光标后1秒作为此查询得到执行:
SELECT DISTINCT <COL2> COLLATE NOCASE as <COL2> from <TABLE_NAME> where <COL1> like '%ab%' LIMIT 0,501
现在,DB提取过程如果我在field2上输入任何内容,请花点时间。这里是最后的查询:
SELECT DISTINCT <COL2> COLLATE NOCASE as <COL2> from <TABLE_NAME> where <COL1> like '%ab%' AND <COL2> like '%cd%' LIMIT 0,501
当我试图分析问题,我才知道问题是由于DISTINCT关键字。 列上我已经创建指标如下:
CREATE INDEX <name1> on <TABLE_NAME>(<COL1>)
CREATE INDEX <name2> on <TABLE_NAME>(<COL1> COLLATE CASE)
CREATE INDEX <name3> on <TABLE_NAME>(<COL2>)
CREATE INDEX <name4> on <TABLE_NAME>(<COL2> COLLATE CASE)
任何人有任何想法如何使这个检索快。
可能问题不在sqlite大小,但你的sql语句。你想在这里发布你的sql语句? – hawshy 2012-02-28 06:34:09
查询类似于[@“select rowid from'%@'其中\”Values \“='%@'”,tableName,descValue]其中descValue是col“值”的col值 – anshul 2012-02-28 06:44:10
什么是returnType功能?总是尝试返回类对象。 – 2012-02-28 08:29:07