Communitygithub.com

backupcompany/skill-cursor

N+1 查詢問題的生產級資料存取實戰手冊。當程式碼在迴圈內查詢資料庫、ORM 針對每筆記錄惰性載入關聯,或列表端點在 5 筆資料時很快但在 50 筆時很慢時使用。已處理的案例位於 references/bad-vs-good.md。不適用於 HTTP 合約設計或 Go/JavaScript 語言風格。

skill-cursor 是什麼?

此技能旨在解決開發者在使用 ORM 或撰寫資料庫查詢時常見的 N+1 查詢問題,這通常發生在程式碼於迴圈內查詢資料庫、ORM 惰性載入關聯,或列表端點因資料量增加而效能驟降的情境。技能提供一套嚴格的生產級規則(Rule 03),禁止 N+1 查詢、禁止在熱路徑上使用 SELECT *、確保查詢有索引支援,並要求對大型列表進行分頁。主要支援使用 ORM 的後端開發場景,特別是在處理一對多關聯與分頁列表時,需先參閱 references/bad-vs-good.md 作為參考。技能的成功標準為:N 筆父資料的列表不會產生 N 次相同關聯的查詢,查詢日誌中的陳述句數量固定(如 1 或 2 個,或 1 + N/批次),且分頁結果正確返回所需的父資料筆數,而非因 JOIN 而膨脹的資料列。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/backupcompany/skill-cursor/tree/HEAD/skills/data-access

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

資料存取

規則 03 是底線:不能有 N+1 查詢、不得在熱路徑上使用 SELECT *、查詢必須有索引支援、大型列表必須分頁。此技能說明了當 ORM 或迴圈隱藏了往返次數時,該規則如何被違反。

在從集合中載入關聯、將映射標記為立即載入、或將一對多關聯加入分頁列表之前,請先閱讀 references/bad-vs-good.md。

完成條件

  • N 個父項目的列表不會對相同關聯發出 N 次查詢。
  • 查詢日誌或追蹤顯示固定的陳述句數量(1 或 2 個,或 1 + N/批次),而非每列一個。
  • 父項目的分頁結果返回您要求的父項目數量,而非 JOIN 後的列數。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相關技能