原回答建議 `ALTER TABLE ... ADD c3 INT IDENTITY` 並 `SELECT c3=c1-c2`,這在 MySQL 中**語法錯誤**(無 `IDENTITY` 關鍵字、賦值語句不能放在 SELECT 選項)且需額外儲存空間、維護觸發器,屬反模式。
SELECT *, (c1 - c2) AS diff
FROM `table`
ORDER BY diff DESC;
ALTER TABLE `table`
ADD COLUMN `diff` INT AS (c1 - c2) STORED,
ADD INDEX `idx_diff` (`diff`);
CREATE INDEX `idx_c1_c2_cover` ON `table` (c1, c2);
若只需 `c1, c2, diff` 三欄,覆蓋索引可避免回表。
SELECT * FROM `table`
WHERE id > (SELECT id FROM `table` ORDER BY (c1-c2) DESC LIMIT 10000, 1)
ORDER BY (c1-c2) DESC LIMIT 20;
避免 `OFFSET` 深分頁掃描大量行。