MySQL 易學易用、文檔豐富,但隨版本快速迭代,許多實用特性常被忽略。本文整理 10 個隱藏技巧,助你提升開發運維效率。
啟動客戶端時加 --xml 參數:
shell> mysql --xml -e "SELECT * FROM test.stores"
1
This is a test
2005-07-28 00:14:57
...
適合程序化解析、異構系統集成。
修改全文搜索參數後,無需 ALTER TABLE ... DROP/ADD INDEX 耗時重建,直接用:
REPAIR TABLE content QUICK;
秒級完成,適用於大表。
對於歸檔類只讀表,使用 myisampack 可節省 40%+ 磁盤空間:
shell> myisampack movies.MYI
Compressing movies.MYD: (146 records) - 41.05%
注意: 壓縮後表不可寫入,需解壓才能修改。
SELECT IF(priv=1, 'admin', 'guest') AS usertype
FROM privs WHERE username='joe';
也支持 CASE WHEN ... THEN ... ELSE ... END 複雜邏輯,減少應用層往返。
shell> mysqldump -T . --fields-terminated-by="," mydb mytable
生成逗號分隔文本,直接導入 Excel、BI 工具,無需轉換。
shell> mysqld --sql_mode="STRICT_ALL_TABLES" &
嚴格模式下:
推薦生產環境開啟,配合應用層驗證雙重保障。
SHOW STATUS;
輸出 150+ 指標:Aborted_clients、Threads_connected、Uptime、Questions(查詢總數)等,適合腳本監控採集。
SHOW CREATE TABLE products;
輸出完整建表語句,含引擎、字符集、索引、自增值,便於遷移、版本控制、文檔生成。
mysql> prompt \u@\h:\d>
PROMPT set to '\u@\h:\d>'
root@localhost:db1>
支持變量:\u用戶、\h主機、\d當前庫、\D完整時間等,避免誤操作生產庫。
mysql -e "SQL" 非交互執行,適合腳本調用mysql --vertical 或 \G 縱向顯示寬表mysql --safe-updates 防止無 WHERE 的 UPDATE/DELETE這些技巧看似微小,卻能在日常開發、排障、遷移中節省大量時間。建議收藏備查,並嘗試融入團隊操作規範。