Rails SQL DB 簡易效能判斷
喜歡作者的文章嗎?馬上按「關注」,當作者發佈新文章時,思書™就會 email 通知您。
思書是公開的寫作平台,創新的多筆名寫作方式,能用不同的筆名探索不同的寫作內容,無限寫作創意,如果您喜歡寫作分享,一定要來試試! 《 加入思書》
思書™是自由寫作平台,本文為作者之個人意見。
給本文個喜歡
或不
關於作者
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
看看作者的其他文章
看看思書的其他文章
在 Rails 中可以很方便的知道 SQL 中的效能,就是使用 explain,舉個例子:
User.where(last_name: "xx").explain
就會有以下的輸出:
很方便,但是,這些數字到底是什麼呢?
我是用 postgreSQL,但是不管那一種 DB,都差不多:
這個報告主要是用來設計資料庫的,用來比較加入 Index (索引)前後的效能差異,主要是看兩個值,一個是 cost 一個是 rows,都是越小越好,我覺得 Rails 用來做資料庫設計測試並不好用,但是也算還 ok 啦,要試的資料庫可以用 migration 建立後,試試,再 rollback/destory,再試試加上 index 後的差異,不算好用,但勉強,不知道有沒有其他更好用的測試法。
有一個很好玩的小插曲,我在試 explain 時,用了以下的 query:
User.find_by(id: 21).explain
結果,就一直 NoMethodError: undefined method `explain' for #<User:0x007ffca70b1a48>,嚇我一大跳,這什麼鬼,結果,就是自己忘了,find_by = where().first,first 當然沒有辦法 explain... 寫下來紀念自己的笨。