Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加快或优化iOS的SQLite查询?_Ios_Performance_Sqlite_Optimization - Fatal编程技术网

如何加快或优化iOS的SQLite查询?

如何加快或优化iOS的SQLite查询?,ios,performance,sqlite,optimization,Ios,Performance,Sqlite,Optimization,我有一个非常简单的数据库结构。我在一个表中有12列,大多数是varchar(什么是最常用的搜索条件?例如,如果搜索名称,可以根据名称首字母创建更多的表。名称以“a”开头的表这在某些情况下会提高您的搜索性能。最常用的搜索条件是什么?例如,如果您搜索姓名,您可以根据姓名首字母创建更多表格。以“A”开头的姓名表格在某些情况下,这将提高您的搜索性能。索引创建索引名\u idx关于名称(姓名、来源、性别、含义)将仅在您的查询包含所有这些列的情况下使用。如果查询中只使用了一些列,则无法使用索引 继续您的第一

我有一个非常简单的数据库结构。我在一个表中有12列,大多数是varchar(什么是最常用的搜索条件?例如,如果搜索名称,可以根据名称首字母创建更多的表。名称以“a”开头的表这在某些情况下会提高您的搜索性能。

最常用的搜索条件是什么?例如,如果您搜索姓名,您可以根据姓名首字母创建更多表格。以“A”开头的姓名表格在某些情况下,这将提高您的搜索性能。

索引
创建索引名\u idx关于名称(姓名、来源、性别、含义)
将仅在您的查询包含所有这些列的情况下使用。如果查询中只使用了一些列,则无法使用索引

继续您的第一个查询:
SELECT*FROM names ORDER BY name COLLATE NOCASE ASC LIMIT 20
-我建议在name上添加一个单独的索引,即
CREATE index names\u idx1 on names(name)
。从理论上讲,这将加快查询速度


如果您希望其他索引具有用于其他常见查询的组合列,这很公平,而且可能会提高查询速度,但请记住,这会增加数据库大小。

索引
创建索引名\u idx关于名称(名称、来源、性别、含义)
我相信,只有当您的查询包含所有这些列时才会使用。如果查询中只使用了一些列,则无法使用索引

继续您的第一个查询:
SELECT*FROM names ORDER BY name COLLATE NOCASE ASC LIMIT 20
-我建议在name上添加一个单独的索引,即
CREATE index names\u idx1 on names(name)
。从理论上讲,这将加快查询速度


如果您希望为其他常见查询使用具有组合列的其他索引,这很公平,而且可能会提高查询速度,但请记住,这会增加您的数据库大小。

如果删除ORDER BY子句中的COLLATE运算符(即简单地
按名称排序ASC
),这三个查询的相对性能如何?如果删除ORDER BY子句中的COLLATE运算符(即,
ORDER BY name ASC
),三个查询的相对性能如何?谢谢,这肯定加快了速度。谢谢,这肯定加快了速度。