mysql查询运行缓慢

mysql查询运行缓慢

问题描述:

有没有办法加快这个查询。它的加载速度很慢,大约有279条记录。我已将数据中的语言& id字段编入索引。还有什么我可以做的吗?mysql查询运行缓慢

echo "<select name=language style='width: 136px;'>"; 
echo "<option value=$language selected=selected>-- Select --</option>"; 
$group1 = '<optgroup label=Common>'; 
$group2 = '<optgroup label=Alphabetically>'; 
$group = mysql_query("SELECT language, grouping, p_order FROM lang_list 
      WHERE grouping IN ('1','2') ORDER BY p_order"); 
while($row = mysql_fetch_array($group)) 
{ 
    if ($row['grouping'] == '1') 
    { 
     $group1 .= '<option value="'.$row['language'].'">'. 
      $row['language'].'</option>'; 
    } 
    else 
    { 
     $group2 .= '<option value="'.$row['language'].'">'. 
      $row['language'].'</option>'; 
    } 
    $group1 .= '</otpgroup>'; 
    $group2 .= '</otpgroup>'; 

    echo $group1; 
    echo $group2; 
    echo "</select>"; 
} 

lang_list (
    id int(8) NOT NULL auto_increment, 
    language varchar(75) NOT NULL, 
    grouping varchar(15) NOT NULL, 
    p_order varchar(15) NOT NULL, 
    PRIMARY KEY (id, language) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=280 ; 
+0

您可以发布上述查询的查询执行计划吗? – InSane 2010-12-06 07:35:28

+0

发布查询的`EXPLAIN`输出,只需将`EXPLAIN`添加到开头 – 2010-12-06 07:55:39

你需要索引你正在与 匹配的内容。

就像一本书,所有的章节页码在索引中给出因为读者按章节搜索,同样对于MySQL处理您的查询速度更快,需要指数将在那里待匹配字段条件。索引其他人在此提出的字段。

你需要指数也groupingp_order。如果没有在任何条件下使用,您可以删除索引language

请发布表格模式以供进一步调查,以及一些示例数据。

create index I_grouping_order on lang_list (grouping, p_order); 

如果你想知道的细节看看http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

注意添加两个单独的索引(一个为grouping,一个用于p_order),因为使用的是两个字段不会completelly做的伎俩在你的查询中同时进行。

尝试编组和p_order的合成索引。阅读关于group by optimization的更多信息