Saturday, September 17, 2016

Use the index, Luke

use-the-index-luke 是 SQL performance 的教學網站。 內容滿深入淺出的。我一開始是為了要理解 clustered index 和 primary key 有什麼關系,而查到這個網站。想不到立刻就看到這個網站上的一篇文章,談論「 MySQL 的預設值將 primary key 設定為 clustered index 這是不盡理想的設計」,文章的大意是:

  1. 要使用 primary key 的話,建議要使用 non-clustered primary key。不要用 MySQL 的預設設置的 clustered primary key 。否則會得到 clustered index penalty 。
  2. 效能的重點在 index-only scan 

由於網站上的文章也相當多,我讀了兩三篇之後,改變心意,用速成的方式來學好了。於是我做了網站上的習題。結果,五題裡頭,我還真的只會兩題,就是有讀過網站上文章所以才會寫兩題。 題目很有啟發性,下方就是其中的一題,題目是不好的 SQL 語句,要能夠看出效能的瓶頸才算通過。