- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在一张表上有三个语句。两个 SELECT
查询和一个 INSERT
查询。
// 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);
一切顺利。但我听说索引对 INSERT
、UPDATE
语句有害。我的意思是索引会使 INSERT
、UPDATE
变慢。所以我想知道,我是否应该在 id_user
上添加一个索引,像这样:
ADD KEY id_user (id_user);
实际上,我正在尝试快速选择 和插入。那么根据这三种说法,我应该添加什么样的索引呢?
最佳答案
好吧,这是一个非常笼统的问题,它取决于数据。索引可能有害,也可能有所帮助,但您不能总是在尝试运行它之前对其进行预测。可以看看加索引前后的执行计划,更好的决定。
一般来说,索引会损害 INSERT
语句的性能,它们通常有助于 UPDATE
语句而不损害它们(同样,取决于索引和更新语句)。
要决定你需要添加哪些索引,你需要回顾一下你每天对这个表到底做了什么,如果它主要更新,那么你应该勇敢地在这个更新的列上添加索引。
我们无法提供适合您的答案,除非您提出具体问题,包括表格设计和所需任务,因此如果您有问题,请更新您的问题并发布。
关于mysql - 在一个表上添加多个索引对插入有害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509821/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我在摆弄 LinqToSQL 和 LINQPad,我注意到 SingleOrDefault() 没有对生成的 SQL 进行任何过滤或限制(我几乎期望与 Take(1) 等效)。 因此,假设您想保护自己
我是一名优秀的程序员,十分优秀!