Rails SQL DB 簡易效能判斷
WriterShelf™ is a unique multiple pen name blogging and forum platform. Protect relationships and your privacy. Take your writing in new directions. ** Join WriterShelf**
WriterShelf™ is an open writing platform. The views, information and opinions in this article are those of the author.
Like
or Dislike
About the Author
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
More to explore
在 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... 寫下來紀念自己的笨。