explain 的使用方法和索引(主键索引/唯一索引/全文索引/普通索引/联合索引)

索引总结索引为什么提高了查询的速率,但是update delete insert 的速度会变慢因为:这三种操作会破坏二叉树的,所以会造成速度变慢什么样的索引使用什么样的方法进行查询对于模糊查询1 使用全文索引的目的就是为了弥补,其他的普通索引不能在前面不能加'%'的模糊查询。CREATE TABLE articles ( id INT UNSIGNED AU...
摘要由CSDN通过智能技术生成

索引总结

索引为什么提高了查询的速率,但是update delete insert 的速度会变慢

因为:这三种操作会破坏二叉树的,所以会造成速度变慢

什么样的索引使用什么样的方法进行查询

对于模糊查询

1 使用全文索引的目的就是为了弥补,其他的普通索引不能在前面不能加'%'的模糊查询。

CREATE TABLE articles (
       id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
       title VARCHAR(200),
       body TEXT,
       FULLTEXT (title,body) -- --如果只有这句话是不生效的只有针对myIsam 生效--
     )engine=myisam charset utf8; -- --全文索引针对MyISAM有用--

INSERT INTO articles (title,body) VALUES
     ('MySQL Tutorial','DBMS stands for DataBase ...')
     ('How To Use MySQL Well','After you went through a ...'),
     ('Optimizing MySQL','In this tutorial we will show ...'),
     ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
     ('MySQL vs. YourSQL','In the following database comparison ...'),
     ('MySQL Security','When configured properly, MySQL ...');

show indexes from articles; 

desc articles

如果mysql估计使用全表扫描要比使用索引快,则不使用索引。
如何查看索引使用的情况:
show status like ‘Handler_read%’;

handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。
handler_read_rnd_next:这个值越高,说明查询低效。 

错误用法:
select * from articles where body like ‘%mysql%’; 【不会使用到全文索引】
证明没有用到全文索引:
explain  select * from articles where body like '%mysql%'

这个possible_key 是空的,索引没有用到全文索引

正确的用法是:

select * from articles where match(title,body) against(‘database’); 【可以】

database 表示的是含有database 的字段

可以看出来真的是可以找到database??????不懂

  • Select match(title,body) against('database') from articles;显示的是在每一行查出来database

字符串的概率

 

只会是针对不太常用的词才会创建索引

Eg 常用的词不会创建索引,就像a字符串,查找的匹配度为0 ,就是没有创建索引,这种词叫做停止词。

Selectmatch(title,body) against('a') from articles;

 

利用sphinx (coreseek) 技术处理中文

对于使用like的查询,查询如果是  ‘%aaa’ 不会使用到索引
    ‘aaa%’ 会使用到索引。
比如: explain select * from dept where dname like '%aaa'
不能使用索引,即,在like查询时,关键的 ‘关键字’ , 最前面,不能使用 % 或者 _这样的字符.,

如果一定要前面有变化的值,则考虑使用 全文索引->sphinx.

explain select

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值