所以我有一个带有产品目录的网站,这个页面有4个产品滑块,一个用于近期产品,另一个用于畅销产品,第三个用于特殊优惠。
为每种类型的滑块创建查询是否更好,或者我应该获取所有产品然后让它们将它们排序并将它们分成三个distict数组,每个滑块一个?
目前我正在做
SELECT * FROM products WHERE deleted = 0
进行测试。
答案 0 :(得分:0)
几乎总是最好优化查询,以便它不仅返回您实际需要的记录,而且只返回您真正需要的列。所以,在你的情况下,这看起来像
SELECT id, description, col3
FROM products
WHERE deleted = 0
AND -- conditions that make it fit in the proper slider
原因是它还花费资源(时间和带宽)将结果集传输到处理程序和处理时间来评估单个返回记录,因此查询的“成本”将随表格而变化大小,而不是您实际需要的数据集的大小。
只是一个例子,但我们假设您要创建前10名卖家列表,并且您有100件故事。你将检索100条记录并保留10.没什么大不了的。现在,您的店铺不断增长,商店里有100000件商品。对于你的前10名,你将不得不翻阅所有这些并抛弃99990条记录。您将有数据库服务器读取并转移给您的99990条记录,以及您必须单独检查以查看它是否是前10项的99990条记录。
由于这种类型的查询将经常执行,因此通过索引搜索列来优化它们也是一个好主意,因为数据库服务器中的索引搜索要快得多。
我说“几乎总是”,因为有罕见的情况,你很难在SQL中表达你真正需要的东西,或者你需要使用相当奇特的技术,如查询提示强制数据库引擎以合理有效的方式执行您的查询。但是这些情况相当罕见,并且当查询没有按预期执行时,通过一些分析,您将在大多数情况下设法提高其性能 - 在SO上查看关于查询优化的数千个问题。< / p>