首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 性能调优 >> 正文

MySQL数据库优化(六)

 


  ... WHERE index_part1=1 AND index_part2=2 AND other_column=3
  /* index = 1 OR index = 2 */
  ... WHERE index=1 OR A=10 AND index=2
  /* 优化了 like "index_part1='hello'" */
  ... WHERE index_part1='hello' AND index_part3=5
  /* 使用索引 index1,但没有用到 index2 或 index3 */
  ... WHERE index1=1 AND index2=2 OR index1=3 AND index3=3;

  以下 WHERE 子句不使用索引:


  /* 没用到 index_part1 */
  ... WHERE index_part2=1 AND index_part3=2
  /* 所有的 AND 部分没用到索引 */
  ... WHERE index=1 OR A=10
  /* 索引没有跨越全部字段 */
  ... WHERE index_part1=1 OR index_part2=10

  有些时候尽管有可用的索引,MySQL也不会用到它们。一种情况是优化程序认为如果使用索引会需要检索更大部分的表记录(这时候,扫描表可能更快,因为这支需要更少的搜索)。尽管如此,如果有一个查询用 LIMIT 限制只检索部分记录,MySQL就一定会使用索引,因为这样能更快检索到更少记录来返回给结果。

  以下是哈希索引的一些不同的特性:

  它们只用于 = 或 <=> 比较(但并不很快)。

  优化程序无法使用哈希索引来加速 ORDER BY 操作(这种索引不能用于按顺序搜索下一个记录)。

  MySQL大致无法判断出介于两个值之间有多少记录(这由范围优化程序来决定使用哪个索引)。这在把 MyISAM 表类型改为采用哈希索引的 MEMORY 类型后可能会影响一些查询。

  只有全部索引键才能用于检索记录(如果是B树索引,任何前缀部分索引也能用于检索记录)。

上一页  [1] [2] [3] 

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航