服务器性能问题 - 哪个查询将是更好的解决方案

时间:2015-02-14 06:46:00

标签: php mysql

我有关于服务器性能的这个简单问题。 假设我生成$ _SESSION [' expired_products'],这是所有产品的ID数组:

$query='select id from products 
where active="1" and available_qty > 0 and expired_date > now()';

此查询将在首次访问者访问

时执行

并且在循环中查询将检查:

$query='select * from products where id not in('.$_SESSION['expired_products'].')';

或每次检查: 活性=#&34; 1"和available_qty> 0和expired_date>现在()

提前致谢!

1 个答案:

答案 0 :(得分:2)

每次检查可能会更好,因为你不知道数量何时变为0,可能是10秒,可能永远不会。 expired_date也可能很快,虽然这个问题可以通过添加一些时间到现在()来减轻。

确保active,available_qty和expired_date在数据库中包含索引。对于索引,性能很可能不会成为问题。

就查询的性能而言,

$query='select id from products 
where active="1" and available_qty > 0 and expired_date > now()';

更快
$query='select * from products where id not in('.$_SESSION['expired_products'].')';

如果你有很多过期的产品,虽然IN比将OR一起链接要快得多。