我知道这不是什么大不了的事,因为它仍然很快(感谢mysqli的强大功能!)但它仍然真的让我感到烦恼所以我会对这件事有所了解。
我的开发站点上的大多数查询(带有appache和SQL的windows localhost)运行时间为0.002或更少,甚至包含5个where和5个连接的大量查询。
在具有两个唯一列的表上进行简单插入,但每次约占0.05。我再次知道这并不多,但与其他查询相比,我真的不知道为什么这么长时间。
这是表格:
CREATE TABLE IF NOT EXISTS `content_users` (
`content_id` int(10) unsigned NOT NULL,
`user_id` mediumint(6) unsigned NOT NULL,
UNIQUE KEY `content_id_2`
(`content_id`,`user_id`),
KEY `content_id` (`content_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我正在尝试运行的查询:
INSERT INTO `content_users` (`content_id`, `user_id`) VALUES (96, 4)
有人可以解释为什么这比我网站上的任何其他查询花费的时间更长吗?
目前该表只有90行,因为它是一个生产环境,实时版本应该是成千上万的。
答案 0 :(得分:0)
索引怎么样?您的表使用复合键,检查唯一性需要花费一些时间。当有更多用户时,这将花费更多。在用于密钥和性能的列上创建合适的索引将得到改进
答案 1 :(得分:0)
由于您已经拥有Unique,我认为您不需要拥有其他两个索引。 MySQL通过查询只使用一个索引...
因此,您始终可以使用唯一键。没有必要另外两个......
问题是,当您插入一些数据时,您正在更新表,唯一索引和其他2个索引。