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

查找的方式
全文索引查找
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 个字节
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值