我在一张表上有三个语句。两个 SELECT
查询和一个 CHÈN
查询。
// first
SELECT * FROM mytable WHERE id_user = :id AND seen IS NULL
// second
SELECT * FROM mytable WHERE id_user = :id AND timestamp > :tm
// third
INSERT INTO mytable (id, id_user, timestamp) VALUE (NULL, :id, :time)
如您所见,根据前两个 SELECT
查询,我需要这两个索引:
ADD KEY id_user1 (id_user, seen);
ADD KEY id_user2 (id_user, timestamp);
一切顺利。但我听说索引对 CHÈN
,CẬP NHẬT
语句有害。我的意思是索引会使 CHÈN
,CẬP NHẬT
变慢。所以我想知道,我是否应该在 id_user
上添加一个索引,像这样:
ADD KEY id_user (id_user);
实际上,我正在尝试快速选择 Và插入。那么根据这三种说法,我应该添加什么样的索引呢?
好吧,这是一个非常笼统的问题,它取决于数据。索引可能有害,也可能有所帮助,但您不能总是在尝试运行它之前对其进行预测。可以看看加索引前后的执行计划,更好的决定。
一般来说,索引会损害 CHÈN
语句的性能,它们通常有助于 CẬP NHẬT
语句而不损害它们(同样,取决于索引和更新语句)。
要决定你需要添加哪些索引,你需要回顾一下你每天对这个表到底做了什么,如果它主要更新,那么你应该勇敢地在这个更新的列上添加索引。
我们无法提供适合您的答案,除非您提出具体问题,包括表格设计和所需任务,因此如果您有问题,请更新您的问题并发布。
Tôi là một lập trình viên xuất sắc, rất giỏi!