我将SQLITE与Unity3D结合使用来创建带有文字的游戏。 我有一个庞大的数据库,其中包含所有存在的单词(700k个单词),我只想检查数据库中是否存在一个单词。
这是我的查询SELECT Word FROM Words WHERE Word = 'IA' COLLATE NOCASE
执行此操作大约需要0.3599885秒
是否可以减少请求时间?
答案 0 :(得分:1)
好的,我刚刚发现COLLATE NOCASE
真的很慢。
我只是用LOWER()
来代替
查询现在花费0.0009974秒
答案 1 :(得分:1)
确保所有单词都以所有小写字母(或所有大写字母)存储在表格中。您可以使用CONSTRAINT
来确保这一点。然后,您无需使用排序规则来查找单词,这将使其快速燃烧。
例如:
create table words (
word varchar(50)
);
insert into words (word) values ('chicago'); -- always lower case
insert into words (word) values ('ia');
insert into words (word) values ('london');
然后在列上创建索引:
create index ix1 on words (word);
现在,您可以快速搜索:
select word from words where word = lower('IA');
注意:此处注意LOWER()
函数应用于等式(值)的“右侧”。如果将其应用于该列,则会使查询变慢,因为您将阻止使用索引。