php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>MySql数据库>文章内容
加快MySql速度、MySql的索引与优化...
来源:收集整理 作者:本站整理 发布时间:2008-03-07  

四、最左前缀

多列索引还有另外一个优点,它通过称为最左前缀(Leftmost Prefixing)的概念体现出来。继续考虑前面的例子,现在我们有一个firstname、lastname、age列上的多列索引,我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时,MySQL将使用fname_lname_age索引:

  
  firstname,lastname,age
  firstname,lastname
  firstname
 

  从另一方面理解,它相当于我们创建了(firstname,lastname,age)、(firstname,lastname)以及(firstname)这些列组合上的索引。下面这些查询都能够使用这个fname_lname_age索引:  

 
  SELECT peopleid FROM people 
    WHERE firstname='Mike' AND lastname='Sullivan' AND age='17'; 
    SELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan'; 
    SELECT peopleid FROM people WHERE firstname='Mike'; 
    The following queries cannot use the index at all: 
    SELECT peopleid FROM people WHERE lastname='Sullivan'; 
    SELECT peopleid FROM people WHERE age='17'; 
    SELECT peopleid FROM people WHERE lastname='Sullivan' AND age='17';
 

 

五、选择索引列

在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列:在WHERE子句中出现的列,在join子句中出现的列。请看下面这个查询:

  
  SELECT age ## 不使用索引
  FROM people WHERE firstname='Mike' ## 考虑使用索引
  AND lastname='Sullivan' ## 考虑使用索引
 
 

这个查询与前面的查询略有不同,但仍属于简单查询。由于age是在SELECT部分被引用,MySQL不会用它来限制列选择操作。因此,对于这个查询来说,创建age列的索引没有什么必要。下面是一个更复杂的例子: php开源  phpma

 
  SELECT people.age, ##不使用索引
  town.name ##不使用索引
  FROM people LEFT JOIN town ON
  people.townid=town.townid ##考虑使用索引
  WHERE firstname='Mike' ##考虑使用索引
  AND lastname='Sullivan' ##考虑使用索引
 

  与前面的例子一样,由于firstname和lastname出现在WHERE子句中,因此这两个列仍旧有创建索引的必要。除此之外,由于town表的townid列出现在join子句中,因此我们需要考虑创建该列的索引。那么,我们是否可以简单地认为应该索引WHERE子句和join子句中出现的每一个列呢?差不多如此,但并不完全。我们还必须考虑到对列进行比较的操作符类型。MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。可以在LIKE操作中使用索引的情形是指另一个操作数不是以通配符(%或者_)开头的情形。例如,“SELECT peopleid FROM people WHERE firstname LIKE 'Mich%';”这个查询将使用索引,但“SELECT peopleid FROM people WHERE firstname LIKE '%ike';”这个查询不会使用索引。


(阅读次数:
共3页: 上一页 [1] [2] 3 下一页
上一篇:开发大型php项目的方法、oop面向对象   下一篇:面向对象OOP的5原则:单一职责原则--SRP
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·用于SELECT和WHERE子句的SQL函数
·MySQL索引分析和优化
·MySQL数据库下.frm .MYD .MYI损
·怎么删除MySQL数据库中的重复数
·MySQL数据导入与导出
·MySQL数据库中SQL查询语句精华
·如何优化MySQL数据库性能
·MySQL查询优化之查询优化器
·怎么备份MySQL数据库
·如何导入导出*.sql文件到MySQL数
·MySQL数据导入导出方法与工具介
·MySQL索引分析和优化加速网站访
  相关文章
·如何正确认识MySQL对服务器端光
·在MySQL数据库中增添新用户...
·若MySQL数据库不允许从远程访问
·介绍:最简便的备份MySql数据库
·MySQL多表连接查询Left Join,Rig
·MySQL数据库管理的6种日志详解
·MySQL数据库接口的VC实现与应用.
·怎样才能编写出高质量高性能的My
·MySQL数据库的常出错代码列表汇
·MySQL数据库使用系列事例...
·MySQL数据库查询中的分页思路的
·MySQL数据库查询中的分页思路的

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号