【发布时间】:2010-12-23 22:50:36
【问题描述】:
我正在使用 PHP 和 MYSQL(MYISAM) 创建一个电子商务网络应用程序。我想知道如何加快查询速度
我有一个包含以下列的超过一百万条记录的产品表:id (int, primary) catid(int) usrid (int) title (int) description (int) status (enum) date(datetime)
最近我根据产品类别(catid)将这个表拆分为多个表。认为它可能会减少服务器上的负载。
现在我需要从这些表中获取结果并结合以下条件集 1. 匹配 usrid 和状态的结果。 (获取用户产品)2 个匹配状态和标题或描述的结果(例如:用于产品搜索)
现在我必须使用 UNION 从这些组合的所有表中获取结果,这会减慢性能,我也不能将 LIMIT 应用于组合结果集。我想在所有这些列上创建一个索引以加快搜索速度,但这可能会减慢 INSERTS 和 UPDATES。我也开始认为拆分桌子一开始就不是一个好主意。
我想知道在这种情况下优化数据检索的最佳方法。我也对新的数据库架构提案持开放态度。
【问题讨论】:
-
您能给我们提供一个示例数据库布局吗?另外,您是否考虑过使用
JOIN? -
如果您概述了当前数据库架构以及相关的表和键,将会很有帮助。对于具有数百万条记录的表,我建议根本不要将它们 UNION-ing 或 JOIN-ing 到其他表,而是对表执行单个查询并让脚本组合您的结果。
-
如果我想一起搜索所有表格,@bobby join 不会在这里给出我想要的结果。
-
@oli 将结果与脚本结合起来是我脑海中闪过的一个想法,这将是我最后的选择。特别是因为无法对 UNION 查询应用限制。