免责声明:我是数据库世界的新手
我想知道:你如何解决一个不断增长的桌子的问题?
我的意思是,假设我想知道“最后添加的项目”,然后我做
SELECT * FROM planetHistory WHERE name =“earth”ORDER BY date DESC 限制1;
这似乎是一个坏主意,因为随着表的增长需要花费越来越多的时间。 我想到的是为通常的未来查询“准备”数据库的设计。对于此示例,数据库可以包含具有单个字段和实例的表:
+-----------------+
|table "lastAdded"|
+-----------------+
| 3242 |
+-----------------+
那会存储最后添加的内容,所以在进行插入之前我应该读取该字段将其递增1然后再写入。
这听起来很奇怪,但是对于我来说,订购1TB的数据似乎更糟糕“只是为了知道哪个是最后一个”怪异的
答案 0 :(得分:1)
通过索引列进行排序可以为您提供这种“优势”。
让DB设计人员担心优化查询逻辑,只需确保使用他们为您提供的工具,如INDEXes。他们的工作是确保查询,甚至数百万条记录,都具有足够的性能。
自己进行这种“优化”可能会导致其他一些问题:
监控您的app / DB,以便您可以主动解决性能问题,但在您知道存在问题之前不要解决它们。特别是在DBs方面,它们的构建尽可能快;当他们不快时,通常是因为我们做的事情是愚蠢的。
答案 1 :(得分:0)
我会用时间戳来做。这些还允许您对数据库进行分区,以便最终移出超出“必须保留”限制的大量数据。
没有数据库可以永远增长的东西。磁盘空间不是无限的。如果您有任何需要表扫描的查询,您会发现它们随着数据库的增长而运行得越来越慢。
最好让自己能够按日,周,月,年或任何适用于您用例的度量将数据分区移出。