我有一个超过 1100 万行的大型 MySql 表。这只是一个庞大的数据集,我的任务是能够根据某些规则分析数据集。
每一行都属于某一个category
。有 200 万个不同的类别。我想获取一个类别的所有行并对其执行操作。
因此,目前,我执行以下操作:
- 从表中选择不同的类别。
- 对于每个类别:从表中选择字段 WHERE
category
=category
即使我的category
列已编入索引,执行也需要很长时间Step 2
。这主要是因为庞大的数据集。
或者,我可以使用 GROUP BY 子句,但是我不确定它是否会一样快,因为在如此庞大的数据集上使用 GROUP BY 可能会很昂贵,尤其是考虑到我将在部分数据集上运行多次分析时。一种永久确保排序表的方法会很有用。
因此,作为替代方案,如果只有我的表预先排序,我可以加快查询速度category
。现在我可以逐行读取表格并在更快的时间内执行相同的操作,因为一个行的所有行都category
将被连续获取。
由于数据集(MySql 表)是固定的,不会对其进行更新、删除、插入操作。我希望能够确保一种方法来维护默认排序顺序category
。任何人都可以提出一个技巧来确保行的默认排序顺序。
也许读取所有行并将它们重写到一个新表或添加一个新的主键来确保这个顺序?