0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Salesforce検索画面の性能改善方法

0
Last updated at Posted at 2026-04-06

Salesforce検索性能の本質はこの3つ:

1.インデックスを使う
2.検索対象を減らす(選択性)
3.全件スキャンを避ける

🔧 1. インデックス最適化
❌ 悪い例

SELECT Id FROM Account
WHERE Status__c = 'Active'

👉 Status__c にインデックスなし → 全件スキャン(遅い)

✅ 改善例

👉 Status__c にカスタムインデックスを付与

SELECT Id FROM Account
WHERE Status__c = 'Active'

📌 効果:数秒 → 数百ms

❌ 選択性が低い条件

WHERE IsActive__c = true  -- 90%がtrue

✅ 改善

WHERE IsActive__c = true
AND CreatedDate = LAST_N_DAYS:30

👉 対象件数を減らす(選択性UP)

🔍 2. LIKE検索の最適化
❌ 悪い例

WHERE Name LIKE '%ABC%'

👉 前後ワイルドカード → インデックス効かない

✅ 改善例

WHERE Name LIKE 'ABC%'

👉 前方一致 → インデックス使用可能

💡 業務例
顧客名検索
👉「前方一致検索」に変更すると高速化
📊 3. データ量のコントロール
❌ 悪い例

Account500万件
全データ検索
```java
SELECT Id FROM Account
WHERE Status__c = 'Active'

✅ 改善例(アーカイブ)

SELECT Id FROM Account
WHERE Status__c = 'Active'
AND CreatedDate = LAST_N_YEARS:2

👉 古いデータを別オブジェクトへ移動

🧠 4. SOSLとSOQLの使い分け
❌ 悪い例(SOQLで全文検索)

SELECT Id FROM Contact
WHERE Name LIKE '%John%'
OR Email LIKE '%John%'

✅ 改善例(SOSL)

FIND 'John' IN ALL FIELDS RETURNING Contact(Id, Name)

👉 全文検索はSOSLの方が高速

🖥️ 5. 画面(UI)の最適化
❌ 悪い例
リストビューに20項目表示
数式項目が多い
✅ 改善
表示項目を5〜8個に削減
数式項目を減らす
❌ Apex呼び出し多すぎ

connectedCallback() {
  loadApex1();
  loadApex2();
  loadApex3();
}

✅ 改善

connectedCallback() {
  Promise.all([loadApex1(), loadApex2()]);
}

👉 通信回数削減

⚙️ 6. Query Planの確認
❌ 悪い例

WHERE Status__c = 'Active'

👉 Cost高い・Index未使用

✅ 改善

WHERE Status__c = 'Active'
AND CreatedDate = LAST_N_DAYS:30

👉 Cost低下・Index使用

🚀 7. OR条件の改善
❌ 悪い例

WHERE Status__c = 'Active'
OR Status__c = 'Pending'

✅ 改善

WHERE Status__c IN ('Active', 'Pending')

👉 インデックス効きやすい

🔥 8. 数式項目の注意
❌ 悪い例

WHERE Score__c > 80  -- 数式項目

👉 インデックス不可

✅ 改善

👉 通常項目に保存

WHERE ScoreStored__c > 80

⚠️ 9. データスキュー
❌ 悪い例(Owner Skew)
50万件が同一ユーザ

WHERE OwnerId = 'xxx'

✅ 改善
Owner分散
Queue利用
💡 10. 実務でよくある改善例
❌ 改善前

SELECT Id FROM Opportunity
WHERE Name LIKE '%test%'
AND StageName = 'Closed Won'

✅ 改善後

SELECT Id FROM Opportunity
WHERE Name LIKE 'test%'
AND StageName = 'Closed Won'
AND CloseDate = THIS_YEAR

🏢 会社情報

有楽テック合同会社
公式サイト:https://yuraku-tech.jp
Salesforce開発・支援などお気軽にご相談ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?