我学习了两种从数据库访问数据的方法。哪一个表现更好?

时间:2017-05-14 21:14:01

标签: php loops for-loop mysqli while-loop

正如标题所暗示的那样,我希望得到一些解释,说明哪种方法最佳性能。我认为#2会更好,因为它只使用一个循环而不是while循环和for循环。使用方法#1还有什么意义吗?

第一种方法

// assign data from row to $users[]
while($row = mysqli_fetch_assoc($result))
{
    $users[] = $row;
}
// and later on use a for loop to access the data in $users[]
for($i=0; $i < count($users); $i++)
{
    echo $users[$i]['name'] . "<br>";
}

方法2:

// only using a while loop
while ($row = mysqli_fetch_assoc($result)) 
{
    echo $row['name'] . "<br>";
}

2 个答案:

答案 0 :(得分:1)

第二种方法更好,如果表现更好,则意味着更优化。它对内存和CPU的影响较小。第一种方法使您的脚本将所有需要的数据从数据库保存到数组,因此您需要一些内存来“缓存”它,并且它还需要很少的CPU时间来重写和读取它。当然,这些数字并不大。

但是虽然该方法在纯优化方面表现更好,但是如果你想使用获取的数据做一些更有趣的事情,第一种方法会更好,但如果这是例如从DB打印记录而不是遗忘,它不值得浪费资源。

答案 1 :(得分:0)

这在很大程度上取决于您在应用程序中真正想要的内容。如果您阅读mysqli_fetch_assoc将了解此函数已经返回一个数组,所以调用迭代它是可有可无的,主要是数组的顺序(向量,一维)是需要的,因为函数已经做了它适合你,将seconde方法作为最佳选择。

如果你想更具体地订购你的数组,多维类型的东西或变成一个对象,第一种方法是可爱的。

PS:如果您的应用程序完全采用OOP,这是一个很好的做法,可以将第一种方法放入类内的私有var中。