如何在MySQL数据库中添加索引以提高性能?

时间:2020-10-09 02:32:10

标签: mysql sql

我正在开发一个项目,该项目可以同步多个集群上的内容。我想使用两个程序来执行此任务。一个程序会定期更新每个群集上内容的存在状态,而另一个程序会在一个内容不在所有群集上时进行内容复制。

数据库表是按以下方式设计的。

table contents -- stores content information.
+----+----------+
| id |  name    |
+----+----------+
|  1 | content_1|
|  2 | content_2|
|  3 | content_3|
+----+----------+

table clusters -- stores cluster information
+----+----------+
| id |  name    |
+----+----------+
|  1 | cluster_1|
|  2 | cluster_2|
+----+----------+

table content_cluster -- each record indicates that one content is on one cluster
+----------+----------+-------------------+
|content_id|cluster_id|   last_update_date|
+----------+----------+-------------------+
|        1 |        1 |2020-10-01T11:30:00|
|        2 |        2 |2020-10-01T11:30:00|
|        3 |        1 |2020-10-01T10:30:00|
|        3 |        2 |2020-10-01T10:30:00|
+----------+----------+-------------------+

第一个程序会定期更新这些表(可能会更改一些表,大多数表保持不变)。第二个程序迭代地获得一个内容记录,该内容记录不在所有群集上。选择查询如下。

SELECT content_id
FROM content_cluster
GROUP BY content_id
HAVING COUNT(cluster_id) < <cluster_number>
LIMIT 1;

似乎不太有效,因为我必须在每个查询中对表进行分组。 因为我不熟悉数据库,所以我想知道这是否是设计数据库的好方法。我必须添加一些索引吗?如何编写选择查询以使其生效?

0 个答案:

没有答案