mysql慢速简单查询
问题描述:
我有一个非常简单的sql查询,这只是一个select * from "table name"
我没有索引我的表或其他任何特殊的东西。mysql慢速简单查询
的问题是,当我通过phpmyadmin
执行它,查询需要大约0.003秒,但我在我的网站执行它通过一个浏览器,它需要大约3分钟!
表中有20K行和19个字段。谁能帮我?
include "config.php"; //Connect to Database
$query= mysql_query("SELECT * FROM table_name");
$num_rsl=mysql_num_rows($query);
echo '<table border="1">';
for($i=0; $i <$num_rsl; $i++)
{
echo '<tr>';
$row=mysql_fetch_assoc($query);
echo '<td>'.$row['id'].'</td>';
echo '<td>'.$row['idLeistung'].'</td>';
echo '<td>'.$row['dtEAN'].'</td>';
echo '<td>'.$row['dtReifenBreite'].'</td>';
echo '<td>'.$row['dtReifenQuerschnitt'].'</td>';
echo '<td>'.$row['dtReifenBauart'].'</td>';
echo '<td>'.$row['dtReifentragfahigkeit'].'</td>';
echo '<td>'.$row['dtReifenGeschwindigkeitsindex'].'</td>';
echo '<td>'.$row['dtReifenTTTL'].'</td>';
echo '<td>'.$row['dtReifenProfil'].'</td>';
echo '<td>'.$row['dtHersteller'].'</td>';
echo '<td>'.$row['dtbestand'].'</td>';
echo '<td>'.$row['FZG'].'</td>';
echo '<td>'.$row['dtEinsatzZweck'].'</td>';
echo '<td>'.$row['dtArtikelNr'].'</td>';
echo '<td>'.$row['dtBeschreibung'].'</td>';
echo '<td>'.$row['dtArtikelNrA2'].'</td>';
echo '<td>'.$row['dtFremdVKPreis'].'</td>';
echo '</tr>';
}
echo '</table>';
答
通常,phpmyadmin会将通过它发出的查询修改为MySQL,以限制结果集中的行数。你
SELECT * FROM table_name
最有可能被通过的phpmyadmin改为
SELECT * FROM table_name LIMIT 0, 30
拉30行肯定需要比拉的所有行时间要少。
@scones在评论中提到了这一点:从表格中拉出20K行,将它们变成一个大的旧HTML表格,然后通过电线将它们发送到浏览器需要很长时间。但是,这段时间可能主要取决于您的Web服务器(PHP运行的地方)的性能以及服务器和浏览器之间的线路。
+0
所以没有理由做更多的东西分页?我问,因为我不知道使用索引... – trelamenos 2013-02-14 23:16:51
这就是为什么你不再使用'mysql_ *'的原因。 – hjpotter92 2013-02-14 18:42:46
显示的来源与所描述的问题无关。 – scones 2013-02-14 18:43:18
从“表名”中没有选择*! – Hokascha 2013-02-14 18:44:34