首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 進階隱藏功能大揭秘:XML輸出、快速重建索引、CSV導出等實用技巧

     編輯:MySQL 資料庫相關知識

MySQL 鮮為人知的 7 大進階特性

MySQL 以易學易用著稱,但隨著版本迭代,許多強大卻鮮少被開發者發掘的功能悄然加入。本文精選 7 項實用進階特性,助你大幅提升開發與運維效率。

1. 以 XML 格式輸出查詢結果

啟動客戶端時加入 --xml 參數,即可將查詢結果轉為結構化 XML,極利於與其他系統整合或程式解析:

shell> mysql --xml -e "SELECT * FROM test.stores;"

輸出範例:



  
    1
    This is a test
    2005-07-28 00:14:57
  
  ...

2. 快速重建全文索引:REPAIR TABLE QUICK

調整全文搜尋參數(如 ft_min_word_len)後,通常需 ALTER TABLE ... DROP INDEX ... ADD FULLTEXT INDEX ... 重建索引,極耗時。對 MyISAM 表可用:

REPAIR TABLE `content` QUICK;

僅重組索引樹,不掃描資料列,秒級完成,Msg_text: OK 即成功。

3. 壓縮唯讀 MyISAM 表:myisampack

針對歷史歸檔、日誌等唯讀表,可離線壓縮節省 40%~70% 磁碟空間:

shell> myisampack /var/lib/mysql/db/movies.MYI
Compressing movies.MYD: (146 records)
- Calculating statistics
- Compressing file
41.05%

注意:壓縮後表變為唯讀,需解壓才能寫入;InnoDB 不支援此工具。

4. SQL 流程控制:IF / CASE 表達式

MySQL 支援標準 SQL 的條件邏輯,可直接在查詢中轉換數值:

SELECT IF(priv = 1, 'admin', 'guest') AS usertype 
FROM privs WHERE username = 'joe';

複雜邏輯可用 CASE WHEN ... THEN ... ELSE ... END。

5. CSV 格式導出:支援 Excel 等工具直接匯入

使用 mysqldump 指定欄位分隔符:

shell> mysqldump -T /tmp --fields-terminated-by=',' mydb mytable

產生 mytable.txt(資料)與 mytable.sql(結構),CSV 格式通用性極佳。

6. 啟用 Strict SQL 模式:拒絕「壞資料」

預設模式下 MySQL 會自動截斷過長字串、將非法日期轉為 0000-00-00 等。啟用嚴格模式:

mysqld --sql-mode="STRICT_ALL_TABLES" &

或在 my.cnf 永久生效:

[mysqld]
sql_mode = "STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

嚴格模式下,不合規資料直接報錯回滾,強制應用層處理異常,大幅提升資料品質。

7. 即時監控伺服器狀態:SHOW STATUS

無需第三方工具,即可獲取連接數、查詢量、運行時間等核心指標:

mysql> SHOW STATUS LIKE 'Threads_connected';
mysql> SHOW GLOBAL STATUS WHERE Variable_name IN ('Connections','Queries','Uptime','Slow_queries');

關鍵指標:Aborted_connects(連接失敗數)、Innodb_buffer_pool_wait_free(緩衝池等待)、Select_full_join(無索引關聯)。

8. 額外福利:自動生成建表語句與自訂提示符

  • SHOW CREATE TABLE `products`; 即得完整 CREATE TABLE DDL,含引擎、字符集、索引定義。
  • 自訂互動式提示符顯示用戶、主機、當前庫:mysql> prompt \u@\h:\d> → root@localhost:db1>

掌握這些隱藏功能,能讓你在日常開發、資料遷移、效能調優、資料品質管控等場景事半功倍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved