我有关于服务器性能的这个简单问题。 假设我生成$ _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>现在()
提前致谢!
答案 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一起链接要快得多。