爲什麼要使用一個索引
索引用於兩件事情。項目
- 選擇
- 排序列表
的有關項目,你需要的指數的選擇,因爲通過所有記錄搜索是不是一種選擇。
但是,如果您只有一次select
100個項目,MySQL可以輕鬆地對這些項目進行排序而無需使用索引。
因此,首先將索引放在where
和join
子句中的項目上。
然後查看每個查詢選擇了多少個項目。如果它少於200,我就不會爲索引進行排序。
添加索引
CREATE INDEX ON index_name
tbl_name(價格)
參見:http://dev.mysql.com/doc/refman/5.1/en/create-index.html
因爲你可以給一個索引的所有選項。
創建表
我的建議:
CREATE TABLE materials (
id integer not null autoincrement primary key,
name varchar not null,
description varchar not null,
stockdate date not null,
saledate date not null,
price decimal(10,2) not null,
/*my suggestion, put an index on all, but not on description*/
INDEX `i_name` (name),
INDEX `i_stockdate` (stockdate),
INDEX `i_saledate` (saledate),
INDEX `i_price` (price)) ENGINE = MyISAM;
如果選擇在where
子句中的描述,然後再加上一個說明全文索引。
CREATE FULLTEXT INDEX i_description ON materials (description);
如果你只對排序描述不添加索引,這是不值得的海事組織。
我的桌子將有超過百萬行 – alwyn 2011-05-04 11:36:28