同一 MyISAM 表執行 SELECT * 返回 4 行,SELECT uid 僅返回 3 行,丟失 uid='uid_3' 記錄。根因:**索引文件損壞,.MYI 與 .MYD 不一致**。
SELECT *:全表掃描數據文件,按記錄鏈表順序讀取,不依賴索引,**不受索引損壞影響**。SELECT uid:優化器選擇索引掃描,遍歷 .MYI 索引項,**受損壞索引影響,僅返回索引中存在的 3 條**。-- 檢查表狀態
CHECK TABLE table_myisam;
-- 輸出關鍵錯誤:
-- "Size of indexfile is: 2049 Should be: 2048"
-- "Found 3 keys of 4"
-- "Corrupt"
-- 修復索引
REPAIR TABLE table_myisam;
-- 返回 "status OK"
-- 再次驗證
CHECK TABLE table_myisam; -- status OK
SELECT * FROM table_myisam; -- 4 rows
SELECT uid FROM table_myisam; -- 4 rows
CHECK TABLE 或 mysqlcheck -A 掃描損壞。myisamchk -r 離線修復。