Php优化:从数据库中获取

时间:2013-07-03 18:09:32

标签: php html database

我有一些PHP代码,一旦按下下一个箭头,它基本上只是获取数据库中的下一个图像。但是在mywebsite上我有时可以在线点击超过600个用户,然后单击下一步。有什么方法可以将这个PHP代码更快地执行以更快地执行吗?

谢谢!

$nxtImage = mysql_query ("SELECT * FROM images WHERE active=1 and id>$id and section=$section ORDER BY id ASC LIMIT 1") or die (mysql_error());
$nxtrow = mysql_fetch_array($nxtImage);
$nxtnum = mysql_num_rows($nxtImage);
$nid = $nxtrow['id'];
$npicTitle = $nxtrow['img_title'];
$nimgLink = preg_replace("![^a-z0-9]+!i", "-", $npicTitle);
$nimgLink = strtolower($nimgLink); 

4 个答案:

答案 0 :(得分:6)

我要做的第一件事就是将查询更改为:SELECT `id`, `img_title` FROM images ...,以确保您只抓住您需要的内容。我接下来要做的是在id, img_title, section, active上构建一个覆盖索引,这样就不必读取数据页。

过去,获得更多硬件,:D

答案 1 :(得分:3)

您可以在服务器端开始一次获取所有图像,然后使用Javascript(例如使用JSON)将其传递给客户端。

然后,当一个人点击箭头时,您只需在Javascript中加载正确的图像(例如,使用下一个更大的数组索引)。

通过这种方式,您可以消除很多(可能按数量级排序)数据库查询,从而提高服务器性能。

答案 2 :(得分:1)

一旦您知道您的用户经常点击“下一步”,您就可以实施hashtag navigation,其中JavaScript已经简要介绍了下一个10,20张图片的参数,并使用动态内容执行导航,而不经常打扰PHP和MySQL。

此外,MySQL提供tunning parameters,您可以在其中增加key_buffer_sizetable_cache的值,以告知您的服务器在内存中保留更多信息,以便更快地搜索和立即响应

我经常将其调整为使用服务器上大部分未使用的内存,因为未使用的内存是浪费的资源。

答案 3 :(得分:0)

您可以在表格中添加名为nextID的列。我知道,它打破了数据库规范化,但在极端情况下,你可能需要这些技巧来提高性能,以维持一个字段的价格。请注意,可以使用数据库触发器维护此新字段。