MySQL 有幾個很詭異的地方
最近一直在那悶 , 為何 MySQL 在某些地方特別慢
舉例
1. 執行 SELECT count( … ) WHERE …. 這種命令 , 會非常慢
2. 執行 SELECT ….. ORDER BY key1,key2 這種命令 , 會非常慢
以上兩種應用情況會發生在資料筆數很多(超過百萬筆)的時候發生 , 在我現任職的公司機器上有 8G RAM 的情況下 , 各種 buffer 調很高一樣慢
由於公司是經營論壇 , 其實在資料的正確性上若不是一定要百分百正確 , 其實仔細研究一下 Discuz , Discuz 用了很多取巧的方式
例如我們要計算某個討論版有多少主題 , 如果真的去 SELECT count() … ,那真的會掛掉 , Discuz 的做法是 , 在表格 cdb_forums 中有另外一個欄位記錄有多少主題數 , 而不是真的去算
而 ORDER BY 的問題 , MySQL 的文件也有提到 , 如果要以兩個欄位排序 , 其實不會用到索引 , 所以都要盡量用取巧的方式 , 讓排序只用到一個 key
最近真的改公司的程式改到很煩 , 所以先記下這些問題 , 以後在規劃資料庫結構時 , 可以特別注意
Categories: MySQL
近期迴響