WEB开发网
开发学院数据库MySQL MySQL数据库优化(三) 阅读

MySQL数据库优化(三)

 2008-06-11 11:04:41 来源:WEB开发网   
核心提示: 在 EXPLAIN 的结果中,这种方法在 type 字段中表现为 index_merge,MySQL数据库优化(三)(5),这种情况下,key 字段包含了所有使用的索引列表,EXPLAIN 当优化起作用时会显示 ref_or_null,优化程序会为任何索引部分处理 IS NULL,并且 k

在 EXPLAIN 的结果中,这种方法在 type 字段中表现为 index_merge。这种情况下,key 字段包含了所有使用的索引列表,并且 key_len 字段包含了使用的索引的最长索引部分列表。

例如:

  SELECT*FROMtbl_nameWHEREkey_part1=10ORkey_part2=20;
  SELECT*FROMtbl_name
  WHERE(key_part1=10ORkey_part2=20)ANDnon_key_part=30;
  SELECT*FROMt1,t2
  WHERE(t1.key1IN(1,2)ORt1.key2LIKE'value%')
  ANDt2.key1=t1.some_col;
  SELECT*FROMt1,t2
  WHEREt1.key1=1
  AND(t2.key1=t1.some_colORt2.key2=t1.some_col2);

5. MySQL 如何优化 IS NULL

MySQL在 col_name IS NULL 时做和 col_name = constant_value 一样的优化。例如,MySQL使用索引或者范围来根据 IS NUL L搜索 NULL。

  SELECT*FROMtbl_nameWHEREkey_colISNULL;
  SELECT*FROMtbl_nameWHEREkey_col<=>NULL;
  SELECT*FROMtbl_name
  WHEREkey_col=const1ORkey_col=const2ORkey_colISNULL;

如果一个 WHERE 子句包括了一个 col_name IS NULL 条件,并且这个字段声明为 NOT NULL,那么这个表达式就会被优化。当字段可能无论如何都会产生 NULL 值时,就不会再做优化了;例如,当它来自一个 LEFT JOIN 中右边的一个表时。

MySQL 4.1.1或更高会对连接 col_name = expr AND col_name IS NULL 做额外的优化, 常见的就是子查询。EXPLAIN 当优化起作用时会显示 ref_or_null。

优化程序会为任何索引部分处理 IS NULL。

以下几个例子中都做优化了,假使字段 a 和 表 t2 中 b 有索引了:

上一页  1 2 3 4 5 6 7  下一页

Tags:MySQL 数据库 优化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接