0

最近被要求开发一个应用程序,它基本上是使用整个数据库中的1个主单表进行操作。

它必须有大约 20 个不同类型的列 - decimals、int、varchar、date、float。在某些时候,该表将有数千行(3-5k)。

该应用程序必须能够通过组合每个列条件来选择记录 - 例如,在日期之间、大于某物、小于某物、等于某物等。基本上结合了许多 where 子句以查看所需的结果。

所以我的问题是,既然我知道如何结合 wheres 并制作应用程序,那么最好的方法是什么?我的意思是当我有 3k 条记录并使用 15 个 WHERE 子句进行 SELECT 查询时,MySQL 是否足够好,不会减慢速度?我从来没有使用过大于 1k 记录的数据库,所以我不确定是否应该为此使用 MySQL。如果这很重要,我还将使用 PHP 作为服务器语言。

4

6 回答 6

3

您正在谈论 ONE where 子句中的条件。

对于关系数据库来说,3000 行是非常少的。这些通常要大得多(例如 300 万以上甚至更多)

我担心您在一张表中有 20 列。这听起来像是一个标准化问题。

于 2012-07-04T12:34:52.803 回答
1

为您的数据库定义明确的结构,包括适当的索引,即使有 15 个条件,3k 条记录也算不了什么。即使没有索引,如果记录如此之少,您是否会看到任何性能下降也是值得怀疑的。

然而,我会为未来做计划,也许看看你的查询,看看你在这个阶段是否可以做任何表优化,以减少未来的痛苦。谁知道呢,今天有 3k 条记录,明年有 30m 条记录。

于 2012-07-04T12:34:33.140 回答
0

由于看到行数非常少,我想它不应该导致任何性能问题。您仍然可以仔细查看使用 OR 运算符并在 where 子句中的列上建立索引。

于 2012-07-04T12:45:50.663 回答
0

指数,指数,指数!

如果您需要检查很多不同的列,请尝试扁平化您使用的逻辑。在任何情况下,请确保您在选中的列上设置了适当的索引。A 不是每列的索引,而是所有这些列的一个索引,经常使用。

于 2012-07-04T12:46:53.373 回答
0

数据库中的 3000 条记录不算什么。即使使用 15 也不会有任何性能问题WHEREMySQL并且PHP会做得很好。

我会更关心你的大量专栏。也许你应该看看这篇文章以确保你尊重数据库normal forms

祝你的项目好运。

于 2012-07-04T12:36:23.850 回答
0

我认为查询 3-5K 行的单个表不会特别密集。MySQL 应该能够轻松应对这样的事情。如果这是“阻塞点”,您可以添加大量索引以加快您的选择,但这会减慢插入、编辑等速度。如果您查询很多不同的行,这也不是一个好主意。

于 2012-07-04T12:37:22.707 回答