diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e55d0c..80d7f35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ Versioning follows [Semantic Versioning](https://semver.org/). ## [1.4.0] — 2026-09-28 — 百萬級 listing 的路由排序與日期查詢(hardening 2.4) -**性質**:效能 + 修正。無 schema 變更;post status/date 副本的索引改為三欄(`wp tmdo post-status-sync` 就地替換)。 +**性質**:效能 + 修正。無 schema 變更;post status/date 副本的索引改為三欄(見「升級後」)。 搭配 HivePress AddOn 0.5.0。來源:dev36 第 3 階壓測(130 萬 listing、121 萬 product、6.2 萬 vendor)。 ### Changed @@ -41,9 +41,13 @@ Versioning follows [Semantic Versioning](https://semver.org/). ### 升級後 -- 已啟用 post status/date 副本的站(`tmdo_post_status_columns` 有 `ready` 的 group)執行一次 - `wp tmdo post-status-sync`:替換索引並重新同步副本(dev36 130 萬列約 75 s)。未執行前 - copy route 照常運作,只是維持 1.3.0 的速度。 +- 只需替換索引:對 `tmdo_post_status_columns` 列出的每個 group 表執行 + `ALTER TABLE <表> ADD INDEX idx_post_status_date_id (post_status, post_date, post_id), DROP INDEX idx_post_status_date` + (空表瞬間完成,dev36 130 萬列約 5 s)。未替換前 copy route 照常運作,只是維持 1.3.0 的速度。 +- **不要為了換索引執行 `wp tmdo post-status-sync`**:它除了替換索引,還會替**所有**尚未有副本的 + post group 加上 `post_status` / `post_date` 欄位並逐列回填(大表 ALTER + 全表 UPDATE;dev36 + 130 萬列約 75 s,上千萬列的站更久)。只有要讓更多 group 啟用 copy route 時才執行,並先在 + 離峰時段以 `--dry-run` 確認列數。 - 效能數字(dev36 前台,routed):價格區間 0.34 s、價格排序 0.37 s、時薪排序 0.35 s、 評分排序 0.51 s、關鍵字 + 價格 0.59 s(原生 6–43 s)。 diff --git a/readme.txt b/readme.txt index e10051e..2b6ea07 100644 --- a/readme.txt +++ b/readme.txt @@ -110,7 +110,7 @@ The Classifier tab analyzes your existing `wp_postmeta` data (access frequency, = 1.4.0 = * Flat-first sorts read the ID tie-break from the flat post_id, so a declared (column, post_id) index returns rows in order; ties now follow the sort direction * Meta clauses without a value route as EXISTS; HivePress's featured-listing lookup on every search page uses the flat table -* Date-ordered routed searches drop the redundant GROUP BY and use a (post_status, post_date, post_id) index (run `wp tmdo post-status-sync` once to replace the index) +* Date-ordered routed searches drop the redundant GROUP BY and use a (post_status, post_date, post_id) index (replace the index on the tables listed in `tmdo_post_status_columns`; `wp tmdo post-status-sync` also adds the copy columns to every other post group) * Rows rebuilt by the migration engine keep their status/date copies and invalidate cached routed counts * Live test tools no longer flush the object cache