为什么要使用索引
索引用于两件事。
- 项目选择
- 列表排序
为了选择您需要索引的项目,因为搜索所有记录不是一种选择。
但是,如果您一次只select 100 个项目,MySQL 可以轻松地对这些项目进行排序,而无需使用索引。
所以首先将索引放在 where 和 join 子句中的项目上。
然后查看每个查询选择了多少项目。如果它少于 200,我不会为排序而烦恼。
添加索引
在 tbl_name(价格)上创建索引 index_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);
如果你只按描述排序不添加索引,IMO 不值得。