Nov 20

幾天前,跟 Solaris 叔叔 談到 MySQL 的 ENUM,回家後上網找了些資料,剛好找出了一些使用 MySQL 時,與效能有關的 tips。

稍微整理過後,放在這裡:

  • 善用 EXPLAIN SELECT 分析 SQL statement,以下列舉狀態解讀:
    EQ_REF 一對一比對
    REF 一對多比對
    RANGE 特定範圍的資料會被傳回
    INDEX 使用 INDEX 裡的資料
    ALL 對整個 TABLE 作掃瞄(最差)
  • 善用 INDEX,以這個 SQL statement 為例:
    SELECT `col_a`
    FROM `table_a` LEFT JOIN `table_b`
    ON `table_a`.`col_b` = `table_b`.`col_c`
    WHERE `col_d` = ....;
    
    -- SELECT 的欄位不需 INDEX,ex: `col_a`。
    -- JOIN 的欄位需要 INDEX,ex: `table_a`.`col_b` 與 `table_b`.`col_c`。
    -- WHERE 的欄位需要 INDEX,ex: `col_d`。
    
  • 儘量使用固定大小的欄位,MyISAM 搜尋固定大小欄位比較快;也就是說,能用 CHAR 就別用 VARCHAR。
  • 儘量將欄位指定為 NOT NULL。
  • ENUM 格式的欄位,資料處理速度很快(實測結果在這)。
  • 不要取不需要的資料,下面這種語法就是不好的例子:
    SELECT * ...
  • 把 BLOB 與 TEXT 拆開,減少 MySQL 開啟單一大檔(table 資料檔案過大)的機會。
  • JOIN 用的欄位資料格式最好是相同的,以免 MySQL 作 FULL TABLE SCAN。
  • 使用 LIKE 時,避免把 % 放在字串開頭,以免 INDEX 利用率不佳。
    -- 下列這種語法無法利用 INDEX
    SELECT ... WHERE `col` LIKE '%string%';
    
    -- 下列這種語法會利用 INDEX
    SELECT ... WHERE `col` LIKE 'string%';
  • 注意 WHERE 子句內的運算式。
    -- 下列這種語法會使用 INDEX,速度快。
    SELECT ... WHERE `col` < 100 / 10;
    
    -- 下列這種語法會導致 FULL TABLE SCAN,速度慢。
    SELECT ... WHERE `col` * 10 < 100;

Technorati Tags: , , , , , , , , , ,

Tags: , , , , , , , , , ,
(Visited 3473 times)
May 29

幾個小時前,PTTDatabase 板 又有人問到 MySQL 的 "SELECT ... LIMIT m,n" 相關問題。
其實,在大多數的網頁系統中,"SELECT ... LIMIT m,n" 應該是一定要用的語法,尤其是在使用者驗證時。

簡單舉例,MySQL 的 "SELECT ..." 語法運作可說是拿著籃子去裝東西,若以 LIMIT 語法限制籃子裝東西的數量,MySQL 會在籃子裝滿後就停止動作,並傳回結果。
在網頁系統中,因為使用者帳號都是獨立的,所以,進行使用者登入驗證時,只需要抓出一筆資料來進行比對。

因此,在網頁系統中,我時常用這種語法來進行使用者登入的驗證:

SELECT `使用者身份` FROM `users` WHERE `username`='使用者名稱' AND `password`='雜湊後的密碼' LIMIT 1;

如果找不到資料,代表使用者的帳號/密碼錯誤。
而直接把密碼加入 WHERE 子句,不挑出來用程式比對則是為了杜絕 SQL Injection 導致的密碼外洩。

另外,這樣作也不錯:

SELECT `使用者身份` FROM `users` WHERE `username`='使用者名稱' AND `password`=PASSWORD( '雜湊前或雜湊後的密碼' ) LIMIT 1;

:cool:

Technorati Tags: ,

Tags: ,
(Visited 5373 times)
Jul 20

這裡 看到的.

  • 軟體在 Longhorn 上的執行速度會比 Windows XP 快 15% .
  • Longhorn 的開機速度會增快 50% , 從待命狀態開機的時間在兩秒內.
  • Windows 的漏洞修正補上後, 需要重開機的機率會少 50% .
  • 連結到系統內部影像檔的數目會減少 50%
  • 企業轉移系統的效率會增快 75%

呃...
我還是覺得大家看看就好, 沒有期待就不會有失望! :cool:

Technorati Tags: , , ,

Tags: , , ,
(Visited 4543 times)
Jun 01

這套是今天發現的軟體.

這篇介紹 裡面有這段 :

Flawlessly in our experience. We"ve now tried it on five PCs and it has sped up each Firefox. In our tests we reduced the loading time of the Firefox home page from 6.47 seconds to 3.922 seconds, which is a 40% improvement, and of the Microsoft homepage from 3.25 seconds down to 2.31, which is a 29% improvement.

我在使用後, 感覺也有效能上的增進 ( 不知道是不是心理因素!? :shock: ) .

Anyway , 軟體官方網頁 在此 .
目前版本是 1.0.4 , 我自己 mirror 了一份, 您可以 點此下載 .

Technorati Tags: , ,

Tags: , ,
(Visited 4693 times)
May 24

剛剛看到 這篇 .

這好像是目前大家在選擇 Blog 系統軟體時所缺乏的資訊!?
不過比較的軟體好像不夠多. orz

Technorati Tags: ,

Tags: ,
(Visited 3268 times)