MySQL 文檔豐富但功能更新快,許多實用特性常被忽略。本文精選 8 個「不為人知」的進階技巧,涵蓋輸出格式、維護操作、SQL 擴充、監控與配置優化。
啟動客戶端加 --xml 參數,SELECT 結果以 XML 標籤輸出,便於程式整合解析:
shell> mysql --xml
mysql> SELECT * FROM test.stores;
1 This is a test ...
調整全文搜尋變數後需重建索引,REPAIR TABLE tbl QUICK 僅重建索引不動資料,秒級完成:
mysql> REPAIR TABLE content QUICK;
+---------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------+--------+----------+----------+
| content | repair | status | OK |
+---------+--------+----------+----------+
對唯讀歸檔表執行 myisampack table.MYI,典型壓縮率 40% 以上,節省磁碟且提升讀取速度(解壓在記憶體)。
支援標準 SQL 流程控制,可直接在 SELECT 中轉換值:
SELECT IF(priv=1, 'admin', 'guest') AS usertype FROM privs WHERE username='joe';
mysqldump -T /path --fields-terminated-by=, db tbl 產生逗號分隔文字檔,直接可被 Excel/ETL 工具匯入。
啟動參數 --sql_mode="STRICT_ALL_TABLES",嚴格檢查:資料截斷、非法日期、型別不符皆報錯中止,而非靜默修正。
回傳 150+ 狀態變數:Aborted_clients、Threads_connected、Uptime、Queries 等,適合寫監控腳本採集。
mysql> SHOW CREATE TABLE products;
CREATE TABLE `products` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`price` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
mysql> prompt \u@\h:\d> → root@localhost:db1>,支援 \u用戶 \h主機 \d資料庫 \D完整時間等。
善用這些隱藏功能,能大幅提升開發除錯與運維效率。