可以把索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。
这么做的好处是可以生成一个尺寸比较小、检索速度却比较快的索引文件。
在绝大多数应用里,中的字符串数据大都以各种各样的名字为主,
把索引的长度设置为10~15 个字符已经足以把搜索范围缩小到很少的几条数据记录了。
在为 BLOB 和 TEXT 类型的数据列创建索引时,必须对索引的长度做出限制;
MySQL 所允许的最大索引全文索引文本字段上的普通索引
只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作。
如果字段里存放的是由几个、甚至是多个单词构成的较大段文字,普通索引就没什么作用了。
这种检索往往以的形式出现,这对 MySQL 来说很复杂,如果需要处理的数据量很大,响应时间就会很长。
这类场合正是全文索引(full-textindex)可以大显身手的地方。
在生成这种类型的索引时,MySQL 将把在文本中出现的所有单词创建为一份清单,查询操作将根据这份清单去检索有关的数据记录。
全文索引即可以随数据表一同创建,也可以等日后有必要时再使用下面这条命令添加:
ALTER TABLE tablename ADD FULLTEXT(column1,column2)有了全文索引,
就可以用 SELECT 查询命令去检索那些包含着一个或多个给定单词的数据记录了。
下面是这类查询命令的基本语法:
SELECT * FROM tablename
WHERE MATCH (column1,column2) AGAINST(‘word1‘,‘word2‘,‘word3‘)
上面这条命令将把 column1 和 column2 字段里有 word1、word2 和 word3 的数据记录全部查询出来。
注解:InnoDB 数据表不支持全文索引。
查询和索引
只有当里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。
如果在测试里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,
这将使后续的查询命令都执行得非常快--不管有没有使用索引。php安装mysql扩展 win
只有当里的记录超过了 1000 条、数据总量也超过了 MySQL 服务器上的内存总量时,的性能测试结果才有意义。
在不确定应该在哪些数据列上创建索引的时候,人们从 EXPLAIN SELECT 命令那里往往可以获得一些帮助。
这其实只是简单地给一条普通的 SELECT 命令加一个 EXPLAIN 关键字作为前缀而已。
有了这个关键字,MySQL 将不是去执行那条 SELECT 命令,而是去对它进行分析。
MySQL 将以表格的形式把查询的执行过程和用到的索引等信息列出来。
在 EXPLAIN 命令的输出结果里,第1列是从读取的数据表的名字,它们按被读取的先后顺序排列。
type列指定了本数据表与其它数据表之间的关联关系(JOIN)。
在各种类型的关联关系当中,效率最高的是 system,然后依次是 const、eq_ref、ref、range、index 和 All
(All 的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍——这种情况往往可以用一索引来避免)。
possible_keys 数据列给出了 MySQL 在搜索数据记录时可选用的各个索引。
key 数据列是 MySQL 实际选用的索引,这个索引按字节计算的长度在 key_len 数据列里给出。
比如说,对于一个 INTEGER 数据列的索引,这个字节长度将是4。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-57961-4.html
这样比较太简单了
生产加工和运输流程啊