2012-07-16 37 views
1

我想使用Salesforce的批量API來運行此格式的查詢。如何在Salesforce中使用批量API和WHERE子句

Select Id from Object where field='<value>'. 

我有成千上萬個這樣的字段值,並且想要檢索那些對象的Id。 AFAIK,Salesforce的批量查詢僅支持一個SOQL語句作爲輸入。

一種選擇是形成像

Select Id,field where field in (<all field values>) 

一個查詢,但問題是SOQL有10000個字符的限制。

此處有任何建議嗎?

感謝

+0

值得更新與業務邏輯的問題,因爲查詢這麼多的字段值不被認爲性能是個好主意REAS附件。 – Anup 2012-07-22 09:05:49

回答

2

看起來你正在試圖執行某種搜索查詢。如果是這樣,只要您正在搜索的字段由SFDC索引,就可以使用SOSL查詢而不是SOQL。

否則,我同意Born2BeMild。你的第二種方法更好,將你的價值清單分成批次將有助於繞過極限。

如果您更詳細地描述了一些用例,它也會有所幫助。即使使用批量api,通常對一組動態字段和值的查詢並不總能產生最佳性能。將數據下載到本地數據庫並以這種方式瀏覽數據幾乎是最好的。

+0

分批分批是一種選擇。我們已經將數據下載到數據庫中了,所以我想,這樣做會更有效率。 – RandomQuestion 2012-07-25 04:25:20

1

你可以打破這些分解成200倍左右的值批次和迭代查詢的Salesforce建立在數據的存儲或處理的子集的結果集。

儘管您需要檢查管理員限制的最大數量的SOQL查詢。您應該能夠在運行時通過API跟蹤您的使用情況,以避免超出最大限度。

0

問題是你正在達到州長的限制。如果來自數據庫,則Saleforce一次只能處理200條記錄。因此能夠與這一切工作記錄,首先您需要的所有記錄添加到列表中,例如:

List<Account> accounts= [SELECT id, name, FROM Account]; 

然後你可以用列表的帳戶工作你需要用它做那麼一切,當你做

Update accounts; 

此鏈接可能會有所幫助:您可以通過更新數據庫 https://help.salesforce.com/apex/HTViewSolution?id=000004410&language=en_US