PRIMARY KEY(CustomerID SalesID)
FOREIGN KEY (CustomerID) REFERENCES customerinfo
(CustomerID) ON DELETECASCADE
) TYPE = INNODB;
注意例子中的參數ON DELETE CASCADE該參數保證當 customerinfo 表中的一條客戶記錄被刪除的時候salesinfo 表中所有與該客戶相關的記錄也會被自動刪除如果要在 MySQL 中使用外鍵一定要記住在創建表的時候將表的類型定義為事務安全表 InnoDB類型
該類型不是 MySQL 表的默認類型定義的方法是在 CREATE TABLE 語句中加上 TYPE=INNODB如例中所示
使用索引
索引是提高數據庫性能的常用方法它可以令數據庫服務器以比沒有索引快得多的速度檢索特定的行尤其是在查詢語句當中包含有MAX() MIN()和ORDERBY這些命令的時候性能提高更為明顯那該對哪些字段建立索引呢?一般說來索引應建立在那些將用於JOIN WHERE判斷和ORDER BY排序的字段上
盡量不要對數據庫中某個含有大量重復的值的字段建立索引對於一個ENUM類型的字段來說出現大量重復值是很有可能的情況例如customerinfo中的province 字段在這樣的字段上建立索引將不會有什麼幫助相反還有可能降低數據庫的MySQL數據庫性能我們在創建表的時候可以同時創建合適的索引也可以使用ALTER TABLE或CREATE INDEX在以後創建索引
從版本開始支持全文索引和搜索全文索引在MySQL 中是一個FULLTEXT類型索引但僅能用於MyISAM 類型的表對於一個大的數據庫將數據裝載到一個沒有FULLTEXT索引的表中然後再使用ALTER TABLE或CREATE INDEX創建索引將是非常快的但如果將數據裝載到一個已經有FULLTEXT索引的表中執行過程將會非常慢
[] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/MySQL/201311/29749.html