Introduction to SOQL and SOSL
SOQL查询相当于一个SELECT SQL语句,并搜索组织的数据库。SOSL是一种对搜索索引执行基于文本的搜索的程序化方式。
当你知道数据在哪些对象中,以下场景使用SOQL
- 从单一对象或相互关联的多个对象中检索数据。
- 计算符合指定条件的记录的数量。
- 作为查询的一部分对结果进行排序。
- 从数字、日期或复选框字段检索数据。
当你不知道数据在哪个表和字段中,以下场景使用SOSL
- 检索你知道存在于某个字段的特定术语的数据。因为SOSL可以对一个字段内的多个术语进行标记,并以此建立一个搜索索引,所以SOSL的搜索速度更快,可以返回更多的相关结果。
- 有效地检索多个对象和字段,其中的对象不论是否相互关联。
- 使用分部功能检索一个组织中某个特定部门的数据。
- 检索中文、日文、韩文或泰文的数据。CJKT术语的形态标记化有助于确保准确的结果。
针对SOQL和SOSL使用效率的问题:
- SOQL WHERE过滤器和SOSL搜索查询都可以指定你应该寻找的文本。如果搜索表达式使用CONTAINS术语,SOSL通常比SOQL快。
- SOSL可以对一个字段内的多个术语进行标记(例如,由空格分隔的多个单词),并以此为基础建立搜索索引。如果你要搜索一个你知道存在于一个字段中的特定的独特术语,你可能会发现SOSL比SOQL在这些搜索中更快。例如,如果你在包含 "Paul and John Company "等值的字段中搜索 "John",你可以使用SOSL。
- 尽量减少要搜索或查询的字段的数量。
简单来说,SOQL更适合单表或者有关联的多表查询;SOSL适合查询内容不确定在哪个字段中,或者查询多个不相关的表。
SOQL基础
SOSL基础