现在的位置: 首页 > 综合 > 正文

MySQL查找的方式与索引的效率

2013年05月03日 ⁄ 综合 ⁄ 共 1385字 ⁄ 字号 评论关闭
查找的方式

全文索引查找
TYPE=MyISAM;
FULLTEXT  KEY  `name`  (column1, column2)
 
#  查找词  "不会吧"  
mysql>  SELECT  *  FROM  t3  WHERE  MATCH  (name,name2)  
       ->        AGAINST  ('不会吧'IN  BOOLEAN  MODE);  
#  查找以词  "不会吧"  开头的任意词句  
mysql>  SELECT  *  FROM  t3  WHERE  MATCH  (name,name2)  
       ->        AGAINST  ('不会吧*'  IN  BOOLEAN  MODE);  
#  查找以词  "不会吧"  开头的任意词句 并 去除词  "真的"  
mysql>  SELECT  *  FROM  t3  WHERE  MATCH  (name,name2)  
       ->        AGAINST  ('+不会吧*  -真的'  IN  BOOLEAN  MODE);  
正则表达式查找
#  查找词  "不会吧"  
mysql>  SELECT  *  FROM  t3  WHERE  name2  REGEXP  "不会吧";  
#  查找以词  "不会吧"  开头的  
mysql>  SELECT  *  FROM  t3  WHERE  name2  REGEXP  "^不会吧";  
#  查找以词  "不会吧"  结束的  
mysql>  SELECT  *  FROM  t3  WHERE  name2  REGEXP  "不会吧$";  
 
提高查找的效率索引
索引的分类:
普通索引
UNIQUE        //唯一性索引,PRIMARY KEY是这种类型
|FULLTEXT   //全文索引
|SPATIA         //
单列索引与多列索引
建索引的技巧
索引用于下面几种情形:
快速找出匹配一个WHERE子句的行。
当执行联结时,从其他表检索行。
对特定的索引列找出MAX()或MIN()值。
如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
 
因此:凡是由where构成的查询语句都必须建索引.
Eg:
mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
建立索引的语法:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX @var{index_name} [@var{index_type}]
    ON @var{tbl_name} (@var{index_col_name},...)
 
@var{index_col_name}:
@var{col_name} [(@var{length})] [ASC | DESC]
Eg: 
       CREATE INDEX index_name1 ON tbl_name(col1, col2);
分析索引效率
MySQL提供了一个内建的SQL命令帮助我们完成这个任务,这就是EXPLAIN命令。EXPLAIN命令的一般语法是:EXPLAIN <SQL命令>
 
其它一个表最多可有16个索引。最大索引长度是256个字节
 

 

抱歉!评论已关闭.