0

我正在 MySQL 中构建一个中等大小(100,000 个条目)的表,我正在尝试优化它以提高速度。这些条目包含一些本质上是事务性的数据,这些数据显然会保存在 MySQL 中。其余数据不会在表格的整个生命周期内发生变化,也不适合表格格式(即,某些条目将包含其他条目不会包含的字段,从而导致大量“空”值)。此外,第二部分中的大部分数据将重复,这意味着可能只有 500-1000 组独特的数据,然后与表中的条目配对。

我正在考虑三种组织数据的方法。1)将MySQL中的所有数据以表格形式保留。2)序列化非唯一数据并将该数据保存在单个 MySQL 字段中。3) 将非唯一数据序列化并保存到硬盘中的一个文件中,由 MySQL 表中的指针引用。

我的问题是你会推荐哪种格式,为什么?考虑到我将在数据库上运行许多查询,哪个最快?

4

3 回答 3

0

使用索引引擎之一,例如Sphinx,不要重新发明轮子。Sphinx 根据搜索/查询选项组织数据,速度非常快,可以处理大量数据。如果您的数据库不经常更改,您只需运行一次 Sphinx Indexer。该解决方案的缺点之一是,Sphinx 索引文件非常大。

于 2013-08-18T20:10:33.057 回答
0

阅读将对您有所帮助。

你也可以使用这个,你可以找到你的答案。

于 2013-08-18T20:11:47.577 回答
0

听起来您正在描述一个规范化的数据库。这是非常标准的。您会将“更大”实体作为具有 id 的单个表。

对于更庞大的数据,您将有一个引用id,称为外键。这是关系数据库设计的结构。“关系”的部分含义是实体之间的关系。

如果您只有几十列,我不会担心某些值在某些行中为 NULL,而其他值在其他行中为 NULL。如果您有多种类型的实体,那么您也可以在数据结构中反映这一点。

编辑:

规范化对性能有好有坏的影响。在减少数据大小的情况下,性能通常优于非规范化数据。如果你有适当的索引结构,那么规范化的数据结构通常工作得很好。

于 2013-08-18T20:26:53.160 回答