Q: MySQL 獲取當前日期的函數是?格式化日期的函數是?
A:
NOW() (日期時間)、CURDATE() (日期)、CURTIME() (時間)、SYSDATE() (執行瞬間時間,受 SET TIMESTAMP 影響不同)DATE_FORMAT(date, format) 如 DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s')STR_TO_DATE(str, format)YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND(), WEEK(), QUARTER()DATE_ADD(), DATE_SUB(), DATEDIFF(), TIMESTAMPDIFF()Q: MySQL 安全策略有哪些?優化策略有哪些?
A:
| 安全策略 | 優化策略 |
|---|---|
| 最小權限原則 (按庫/表/列授權) | Schema 設計規範化 (3NF) + 適度反規範化 |
強密碼策略 + 定期輪換 (validate_password 插件) | 索引優化 (覆蓋索引、前綴索引、避免回表) |
| 禁用/重命名 root、限制訪問源 (IP/網段) | SQL 調優 (EXPLAIN、慢查詢分析、避免 SELECT *) |
| 啟用 SSL/TLS 傳輸加密 | 架構優化 (讀寫分離、分庫分表、緩存層) |
審計日志 (audit_log 插件) | 配置調優 (Buffer Pool、IO Capacity、Log File Size) |
| 定期備份 + 異地災備 + 恢復演練 | 硬件升級 (NVMe SSD、大內存、多核 CPU) |
| 禁用不必要功能 (LOAD DATA LOCAL INFILE 等) | 定期維護 (ANALYZE TABLE、OPTIMIZE TABLE、統計信息更新) |
Q: 寫出三種以上 MySQL 存儲引擎名稱及各自用途。
A:
| 引擎 | 核心特性 | 適用場景 |
|---|---|---|
| InnoDB | 事務(ACID)、行級鎖、MVCC、外鍵、崩潰恢復、聚簇索引 | 核心業務、高併發讀寫、數據一致性要求高 (默認首選) |
| MyISAM | 表級鎖、全文索引(5.6 前)、壓縮表、無事務、無外鍵 | 只讀/讀多寫少、日志/歸檔表、全文搜索(舊版) |
| Memory (HEAP) | 數據在內存、Hash 索引默認、重啟丟失、表級鎖 | 臨時表、查找表、緩存層、會話數據 (數據可重建) |
| Archive | 僅支持 INSERT/SELECT、行壓縮(Zlib)、無索引、無事務 | 海量日志歸檔、審計數據、寫一次讀極少 |
| CSV | 數據存 CSV 文本、無索引、全表掃描 | 數據交換、外部工具處理、簡單導入導出 |
| NDB Cluster | 分佈式、內存為主、高可用、自動分片 | 電信級高可用、極低延遲、跨數據中心同步 |
Q: 論壇有一個主題表 topics,一個回覆表 replies,寫 SQL 輸出按回覆量排序的主題列表。
A:
-- 假設結構
-- topics: id, title, create_time
-- replies: id, topic_id, content, create_time
-- 方案 1:子查詢 (直觀)
SELECT t.*,
(SELECT COUNT(*) FROM replies r WHERE r.topic_id = t.id) AS reply_count
FROM topics t
ORDER BY reply_count DESC;
-- 方案 2:JOIN + GROUP BY (大數據量通常更快)
SELECT t.id, t.title, t.create_time, COUNT(r.id) AS reply_count
FROM topics t
LEFT JOIN replies r ON t.id = r.topic_id
GROUP BY t.id, t.title, t.create_time
ORDER BY reply_count DESC;
-- 方案 3:衍生表/關聯子查詢 (避免大表 GROUP BY)
SELECT t.*, COALESCE(r.cnt, 0) AS reply_count
FROM topics t
LEFT JOIN (
SELECT topic_id, COUNT(*) AS cnt FROM replies GROUP BY topic_id
) r ON t.id = r.topic_id
ORDER BY reply_count DESC;
加分點:說明索引建議 (replies(topic_id))、大數據量分頁優化 (WHERE reply_count > ... 游標分頁)、緩存策略 (Redis 存熱門主題回覆數)。