1. 全文检索就是FULLTEXT,用于 MyISAM 表,在列类型为 CHAR、VARCHAR 或 TEXT 列上创建。
2. 将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。
3. 将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。
4. MySQL自带的全文索引只能对英文进行全文检索。要检索中文用sphinx。
5. 创建全文检索:alter table 表名 add fulltext index 索引名(列名,[列名],[列名]..(可以有多个,可以有一个)。
6. 在创建表的时候建全文检索:
CREATE TABLE article (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY FULLTEXT (title, content));
(在title和content列上创建全文索引)。
--------------------------------------------------------------------------------
附一:应用场景
1. 当数据多且字段值有相同的值得时候用普通索引。
2. 当字段多且字段值没有重复的时候用唯一索引。
3. 当有多个字段名都经常被查询的话用复合索引。
4. 普通索引不支持空值,唯一索引支持空值。
5. 但是,若是这张表增删改多而查询较少的话,就不要创建索引了,因为如果你给一列创建了索引,那么对该列进行增删改的时候,都会先访问这一列的索引,
6. 若是增,则在这一列的索引内以新填入的这个字段名的值为名创建索引的子集,
7. 若是改,则会把原来的删掉,再添入一个以这个字段名的新值为名创建索引的子集,
8. 若是删,则会把索引中以这个字段为名的索引的子集删掉。
9. 所以,会对增删改的执行减缓速度,
10. 所以,若是这张表增删改多而查询较少的话,就不要创建索引了。
11. 更新太频繁地字段不适合创建索引。
12. 不会出现在where条件中的字段不该建立索引。
--------------------------------------------------------------------------------
附二:创建索引
CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME);
其中UNIQUE和CLUSTERED为可选项,分别是建立唯一索引和聚簇索引,具体解释为:
UNIQUE:表示此索引的每一个索引值只对应唯一的数据。
CLUSTERED:表示要建立的索引时聚簇索引,即索引项的顺序与表中记录的物理顺序一致的索引组织
ALTER TABLE table_name ADD INDEX index_name (column_list);