我在我的网站上创建了一个快速的基于MYSQL的新闻源,我用数字函数+ fetch_arry写出了数据库中的最后四条新闻。我记得当我使用这样的脚本时它运行正常,但是有了这个,我的代码达到了18-20秒的速度非常缓慢,这对我的粉丝来说不是最好的事情。是什么导致了这个问题,或者我怎样才能加快提升速度?
$e = mysql_query('SELECT * FROM hirek ORDER BY date DESC LIMIT 4');
if (!$e) {
die(mysql_error());
$count = 0;
}
$get_hir = mysql_num_rows(mysql_query("SELECT * FROM hirek ORDER BY date DESC LIMIT 4"));
if ($get_hir <= 0)
{
echo '<div class="lil-box lil-box-tl"><div><center><h4>Nincsennek hírek!</h4></center></div></div>';
} else {
while($row = mysql_fetch_array($e))
{
echo '<div class="lil-box lil-box-tl">';
echo '<h4>'.$row['cim'].'</h4>';
if($row['kep'] == 0)
{
echo '<div class="icon"><img alt="" src="images/icon-info.png" width="24" /></div>';
} else if($row['kep'] == 1) {
echo '<div class="icon"><img alt="" src="images/icon-up.png" width="24" /></div>';
} else if($row['kep'] == 2) {
echo '<div class="icon"><img alt="" src="images/icon-euro.png" width="24" /></div>';
}
echo tores($row['post'],65);
echo '</div>';
}
}
('tores'是一个strlen函数。)
答案 0 :(得分:0)
为您要排序的字段创建索引(一次查询)
ALTER TABLE `hirek`
ADD INDEX `date` (`date`);
这应该使您的查询在索引上工作,因此速度更快。
还要将您的代码重写为:
$e = mysql_query('SELECT * FROM hirek ORDER BY date DESC LIMIT 4');
if (!$e) {
die(mysql_error());
$count = 0;
}
$rows = array();
while($row = mysql_fetch_array($e)) $rows[] = $row;
if (count($rows) == 0) {
echo '<div class="lil-box lil-box-tl"><div><center><h4>Nincsennek hírek!</h4></center></div></div>';
} else {
foreach ($rows as $row)
{
echo '<div class="lil-box lil-box-tl">';
echo '<h4>'.$row['cim'].'</h4>';
if($row['kep'] == 0)
{
echo '<div class="icon"><img alt="" src="images/icon-info.png" width="24" /></div>';
}
else if($row['kep'] == 1) {
echo '<div class="icon"><img alt="" src="images/icon-up.png" width="24" /></div>';
} else if($row['kep'] == 2) {
echo '<div class="icon"><img alt="" src="images/icon-euro.png" width="24" /></div>';
}
echo tores($row['post'],65);
echo '</div>';
}
}
这是在没有两次执行查询的情况下执行此操作的一种方法。 还可以考虑切换到mysqli / pdo,因为不推荐使用mysql_ *。