[英]mysql query running slow
有沒有辦法加快這個查詢。 它的加載速度慢,約有279條記錄。 我已將數據中的Language&id字段編入索引。 還有什么我可以做的嗎?
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 ;
您需要索引要匹配的內容。
就像書中一樣,所有章節的頁碼都在索引中給出,因為讀者按章節搜索,類似於Mysql更快地處理你的查詢,你需要索引將在where條件中匹配的字段。 索引其他人在此建議的字段。
您還需要索引grouping
和p_order
。 如果沒有任何where條件使用,您可以刪除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
)將無法完成這一操作,因為您在查詢中同時使用這兩個字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.