WEB开发网
开发学院数据库MySQL MySQL查询优化程序 阅读

MySQL查询优化程序

 2006-04-07 10:45:38 来源:WEB开发网   
核心提示: ■ 在LIKE 模式的起始处不要使用通配符,有时,MySQL查询优化程序(3),有的人会用下列形式的WHERE 子句来搜索串:WHERE col_name LIKE "%string%"如果希望找到s t r i n g,不管它出现在列中任何位置,如果不能,那么应该试一

■ 在LIKE 模式的起始处不要使用通配符。有时,有的人会用下列形式的WHERE 子句来搜索串:
 WHERE col_name LIKE "%string%"
如果希望找到s t r i n g,不管它出现在列中任何位置,那么这样做是对的。但不要出于习惯在串的两边加“ %”。如果实际要查找的只是出现在列的开始处的串,则不应该要第一个“%”号。例如,如果在一个包含姓的列中查找“ M a c”起始的姓,应该编写如下的WHERE 子句:
 WHERE last_name LIKE "Mac%"
优化程序考虑模式中的开始的文字部分,然后利用索引找到相符合的行。不过宁可写成如下的表达式,它允许使用last_name 上的索引:
 WHERE last_name >= "Mac" AND last_name < "Mad"
这种优化对使用REGEXP 操作符的模式匹配不起作用。

■ 帮助优化程序更好地评估索引的有效性。缺省时,如果将索引列中的值与常量进行比较,优化程序将假定键字是均匀地分布在索引中的。优化程序还将对索引进行一个快速的检查,以估计在确定相应的索引是否应该用于常量的比较时要使用多少条目。可利用myisamchk 或isamchk 的--analyze 选项给优化程序提供更好的信息,以便分析键值的分布。myisamchk 用于MyISAM 表,isamchk 用于ISAM 表。为了完成键值分析,必须能够登录到MySQL服务器主机中,而且必须对表文件具有写访问权限。

■ 利用EXPLAIN 检验优化程序操作。检查用于查询中的索引是否能很快地排除行。如果不能,那么应该试一下利用STRAIGHT_JOIN 强制按特定次序使用表来完成一个连接。查询的执行方式不那么显然;MySQL可能会有很多理由不以您认为最好的次序使用索引。

上一页  1 2 3 4 5  下一页

Tags:MySQL 查询 优化

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