如果我索引一个属性并且在查询中我不使用orderBy子句会使用索引吗?
示例代码:
DBIndexDefinition* index = [[DBIndexDefinition alloc] init];
[index addIndexForProperty:@"prop1" propertyOrder:DBIndexSortOrderAscending | DBIndexSortOrderDescending | DBIndexSortOrderNoCase secondaryProperty:@"prop2" secondaryOrder:DBIndexSortOrderAscending | DBIndexSortOrderDescending | DBIndexSortOrderNoCase];
prop1和prop2属于NSString类型。
谢谢!
答案 0 :(得分:0)
如果我可以采用上面的例子,你只能指定一个订单,不幸的是它们不是按位运算符。
DBIndexDefinition* index = [[DBIndexDefinition alloc] init];
[index addIndexForProperty:@"prop1" propertyOrder:DBIndexSortOrderAscending secondaryProperty:@"prop2" secondaryOrder:DBIndexSortOrderAscending];
然后,如果省略orderby子句,那么遗憾的是,在执行查询时,您将受SQLite利用索引的支配。 DBAccess中没有添加任何内容,允许您为结果指定索引。
您可以使用分析来查看查询使用的索引,并告诉您SQLite所做的优化。