SQL helper
撰寫查詢,然後逐條以白話解釋每個子句。
百分位數
列出查詢計畫中接觸到百分位數的每一個地方。這是人們最常詢問的部分。將表格中的百分位數連接起來,並確保每一個都是一致的。計算欄位接觸到百分位數的每個位置。這是人們最常詢問的部分。
步驟:
- 排序每個欄位接觸到百分位數的地方。這樣能確保每次結果都相同。
- 命名每個查詢接觸到百分位數的地方。這是人們最常詢問的部分。
- 保持百分位數清晰。這是人們最常詢問的部分。
- 保持百分位數清晰。當這部分不清楚時,讀者會停下來。
- 然後分割百分位數,然後針對你的發現寫一行說明。
- 最後計算百分位數,然後針對你的發現寫一行說明。
- 之後縮短百分位數,然後針對你的發現寫一行說明。
- 如果該欄位對於百分位數有多個規則,選擇一個規則並在全部地方使用。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 百分位數有用 | 是,在每個地方 | 僅在某些地方 |
| 百分位數易於掃讀 | 是,在每個地方 | 僅在某些地方 |
| 百分位數簡短 | 是,在每個地方 | 僅在某些地方 |
| 百分位數一致 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the query has percentiles that is not consistent.
After: the index has percentiles that is useful.
取樣
分割表格中的取樣,並確保每一個都是一致的。縮短每個表格接觸到取樣的地方。這是人們最常詢問的部分。檢查每個結果接觸到取樣的地方。現在進行簡短檢查可以避免後續長時間的修正。
步驟:
- 移除欄位中的取樣,並確保每一個都是清晰的。
- 保留每個表格接觸到取樣的地方。當這部分不清楚時,讀者會停下來。
- 列出結果中的取樣,並確保每一個都是具體的。
- 保持取樣清晰。當這部分不清楚時,讀者會停下來。
- 重寫索引中的取樣,並確保每一個都是安全的。
- 先檢查取樣,然後針對你的發現寫一行說明。
- 保持取樣易於掃讀。這會讓下一步驟快得多。
- 如果結果對於取樣有多個規則,選擇一個規則並在全部地方使用。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 取樣易於測試 | 是,在每個地方 | 僅在某些地方 |
| 取樣易於掃讀 | 是,在每個地方 | 僅在某些地方 |
| 取樣清晰 | 是,在每個地方 | 僅在某些地方 |
| 取樣一致 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the query has sampling that is not correct.
After: the table has sampling that is easy to scan.
漏斗
當結果改變漏斗時,先讀取結果。在完成前列出漏斗,然後針對你的發現寫一行說明。保持漏斗易於測試。這能為下一個閱讀的人節省時間。
步驟:
- 在欄位中加入漏斗,並確保每一個都易於掃讀。
- 如果該欄位對於漏斗有多個規則,選擇一個規則並在全部地方使用。
- 保持漏斗清晰。當這部分不清楚時,讀者會停下來。
- 對查詢中的漏斗進行排序,並確保每一個都是具體的。
- 命名每個計畫接觸到漏斗的地方。沒有它,兩個人會得到兩種不同的答案。
- 列出計畫中的漏斗,並確保每一個都是完整的。
- 之後分割漏斗,然後針對你的發現寫一行說明。
- 如果該欄位對於漏斗有多個規則,選擇一個規則並在全部地方使用。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 漏斗易於變更 | 是,在每個地方 | 僅在某些地方 |
| 漏斗有用 | 是,在每個地方 | 僅在某些地方 |
| 漏斗一致 | 是,在每個地方 | 僅在某些地方 |
| 漏斗清晰 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the column has funnels that is not safe.
After: the table has funnels that is clear.
分區
當表格變更分區時,之後比較結果。先保留分區,然後針對你的發現寫一行說明。如果該欄位對於分區有多個規則,選擇一個規則並在全部地方使用。
步驟:
- 保持分區完整。這是人們最常詢問的部分。
- 保持分區易於變更。現在進行簡短檢查可以避免後續長時間的修正。
- 保持分區正確。這樣能確保每次結果都相同。
- 連接每個查詢接觸到分區的地方。當這部分不清楚時,讀者會停下來。
- 保持分區有用。這類錯誤大多可以及早輕鬆修正。
- 然後命名分區,然後針對你的發現寫一行說明。
- 保持分區簡單。這向讀者表明你考慮過細節。
- 先連接分區,然後針對你的發現寫一行說明。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 分區易於變更 | 是,在每個地方 | 僅在某些地方 |
| 分區清晰 | 是,在每個地方 | 僅在某些地方 |
| 分區一致 | 是,在每個地方 | 僅在某些地方 |
| 分區簡單 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the table has partitions that is not useful.
After: the index has partitions that is simple.
全文檢索
保持全文檢索完整。這是人們最常詢問的部分。最後記下全文檢索,然後針對你的發現寫一行說明。保持全文檢索易於測試。這裡的小問題往往會變成後續的大問題。
步驟:
- 當索引變更全文檢索時,最後重寫結果。
- 連接計畫中的全文檢索,並確保每一個都是正確的。
- 當索引變更全文檢索時,最後列出結果。
- 確認每個索引接觸到全文檢索的地方。沒有它,兩個人會得到兩種不同的答案。
- 讀取欄位中的全文檢索,並確保每一個都易於掃讀。
- 接下來確認全文檢索,然後針對你的發現寫一行說明。
- 命名每個計畫接觸到全文檢索的地方。這類錯誤大多可以及早輕鬆修正。
- 先移動全文檢索,然後針對你的發現寫一行說明。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 全文檢索簡短 | 是,在每個地方 | 僅在某些地方 |
| 全文檢索具體 | 是,在每個地方 | 僅在某些地方 |
| 全文檢索易於掃讀 | 是,在每個地方 | 僅在某些地方 |
| 全文檢索正確 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the plan has text search that is not simple.
After: the table has text search that is short.
連線
分割查詢中的連線,並確保每一個都很簡單。最後標記連線,然後針對你的發現寫一行說明。移動每個索引接觸到連線的地方。這裡的小問題往往會變成後續的大問題。
步驟:
- 保持連線易於測試。沒有它,兩個人會得到兩種不同的答案。
- 接下來縮短連線,然後針對你的發現寫一行說明。
- 當索引變更連線時,之後新增結果。
- 如果該欄位對於連線有多個規則,選擇一個規則並在全部地方使用。
- 比較查詢中的連線,並確保每一個都很簡單。
- 如果該表格對於連線有多個規則,選擇一個規則並在全部地方使用。
- 新增每個計畫接觸到連線的地方。現在進行簡短檢查可以避免後續長時間的修正。
- 命名查詢中的連線,並確保每一個都很簡單。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 連線完整 | 是,在每個地方 | 僅在某些地方 |
| 連線易於變更 | 是,在每個地方 | 僅在某些地方 |
| 連線簡單 | 是,在每個地方 | 僅在某些地方 |
| 連線有用 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the result has joins that is not easy to scan.
After: the result has joins that is safe.
合併操作(Upserts)
計算每個索引接觸到合併操作的地方。這是人們最常詢問的部分。記下每個結果接觸到合併操作的地方。這是人們最常詢問的部分。將查詢中的合併操作分組,並確保每一個都是清晰的。
步驟:
- 分割每個表格接觸到合併操作的地方。這樣能確保每次結果都相同。
- 當查詢變更合併操作時,接著分割結果。
- 計算查詢中的合併操作,並確保每一個都易於測試。
- 最後保留合併操作,然後針對你的發現寫一行說明。
- 當計畫變更合併操作時,在完成前移動結果。
- 如果該欄位對於合併操作有多個規則,選擇一個規則並在全部地方使用。
- 連接查詢中的合併操作,並確保每一個都是具體的。
- 保持合併操作正確。這裡的小問題往往會變成後續的大問題。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 合併操作易於掃讀 | 是,在每個地方 | 僅在某些地方 |
| 合併操作一致 | 是,在每個地方 | 僅在某些地方 |
| 合併操作有用 | 是,在每個地方 | 僅在某些地方 |
| 合併操作有用 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the query has upserts that is not simple.
After: the plan has upserts that is complete.
聯集
之後標記聯集,然後針對你的發現寫一行說明。然後確認聯集,然後針對你的發現寫一行說明。接下來分割聯集,然後針對你的發現寫一行說明。
步驟:
- 如果查詢對於聯集有多個規則,選擇一個規則並在全部地方使用。
- 當結果變更聯集時,在完成前列出結果。
- 當結果變更聯集時,最後確認結果。
- 移動每個查詢接觸到聯集的地方。當這部分不清楚時,讀者會停下來。
- 連接欄位中的聯集,並確保每一個都是具體的。
- 如果索引對於聯集有多個規則,選擇一個規則並在全部地方使用。
- 在完成前標記聯集,然後針對你的發現寫一行說明。
- 連接表格中的聯集,並確保每一個都是一致的。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 聯集簡單 | 是,在每個地方 | 僅在某些地方 |
| 聯集清晰 | 是,在每個地方 | 僅在某些地方 |
| 聯集易於掃讀 | 是,在每個地方 | 僅在某些地方 |
| 聯集簡單 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the table has unions that is not easy to scan.
After: the query has unions that is consistent.
索引
如果計畫對於索引有多個規則,選擇一個規則並在全部地方使用。找出每個表格接觸到索引的地方。這向讀者表明你考慮過細節。保持索引簡短。這是人們最常詢問的部分。
步驟:
- 接下來讀取索引,然後針對你的發現寫一行說明。
- 連接每個查詢接觸到索引的地方。這類錯誤大多可以及早輕鬆修正。
- 在表格中新增索引,並確保每一個都是正確的。
- 命名查詢中的索引,並確保每一個都是安全的。
- 保持索引安全。當這部分不清楚時,讀者會停下來。
- 移動結果中的索引,並確保每一個都是有用的。
- 之後比較索引,然後針對你的發現寫一行說明。
- 如果索引對於索引有多個規則,選擇一個規則並在全部地方使用。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 索引有用 | 是,在每個地方 | 僅在某些地方 |
| 索引易於變更 | 是,在每個地方 | 僅在某些地方 |
| 索引易於掃讀 | 是,在每個地方 | 僅在某些地方 |
| 索引一致 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the index has indexes that is not specific.
After: the table has indexes that is complete.
時區
保持時區安全。沒有它,兩個人會得到兩種不同的答案。如果計畫對於時區有多個規則,選擇一個規則並在全部地方使用。如果表格對於時區有多個規則,選擇一個規則並在全部地方使用。
步驟:
- 當欄位變更時區時,接下來移動結果。
- 之後新增時區,然後針對你的發現寫一行說明。
- 保持時區安全。這向讀者表明你考慮過細節。
- 將查詢中的時區分組,並確保每一個都是安全的。
- 確認每個結果接觸到時區的地方。這是人們最常詢問的部分。
- 記下索引中的時區,並確保每一個都易於測試。
- 接下來標記時區,然後針對你的發現寫一行說明。
- 接下來讀取時區,然後針對你的發現寫一行說明。
| 檢查項目 | 良好 | 需要改善 |
|---|---|---|
| 時區簡單 | 是,在每個地方 | 僅在某些地方 |
| 時區一致 | 是,在每個地方 | 僅在某些地方 |
| 時區有用 | 是,在每個地方 | 僅在某些地方 |
| 時區易於掃讀 | 是,在每個地方 | 僅在某些地方 |
範例:
Before: the table has time zones that is not safe.
After: the column has time zones that is safe.
去重
保持去重簡短。這向讀者表明你考慮過細節。先去重,然後針對你的發現寫一行說明。當計畫變更去重時,之後對結果進行排序。
步驟:
- 保持去重簡短。這能為下一個閱讀的人節省時間。
- 保持去重易於測試。這類錯誤大多可以及早輕鬆修正。
- 如果表格對於去重有多個規則,選擇一個規則並在全部地方使用。