有没有一种方法可以优化大型数据库的简单SQL请求

时间:2020-04-30 12:41:41

标签: sql sqlite unity3d optimization query-optimization

我将SQLITE与Unity3D结合使用来创建带有文字的游戏。 我有一个庞大的数据库,其中包含所有存在的单词(700k个单词),我只想检查数据库中是否存在一个单词。

这是我的查询SELECT Word FROM Words WHERE Word = 'IA' COLLATE NOCASE 执行此操作大约需要0.3599885秒 是否可以减少请求时间?

2 个答案:

答案 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()函数应用于等式(值)的“右侧”。如果将其应用于该列,则会使查询变慢,因为您将阻止使用索引。

相关问题