进展如何。我希望这不被认为是...的重复 mysql two column primary key with auto-increment
我的问题有点不同,因为我没有尝试引用不同的数据库。
我只想知道最“有效”的方法来解决这个问题......
我想要一个将 page_id 作为 primary key
的评论表,但我仍然希望有一个与每一行关联的自动递增 id,以便在更新或删除它们时可以通过 id 来寻址它们。截至目前,我的表格结构如下
id INT(8) NOT NULL AUTO_INCREMENT,
page_id INT(5) NOT NULL,
comment VARCHAR(2500) NOT NULL,
PRIMARY KEY (id)
我的查询看起来像......
SELECT comment FROM comments WHERE page_id = '$page_id' AND id >= $start_at_id
我一直在看一堆 MySQL 优化视频,我一直听到左边有索引,但我的问题是我大部分时间都是盲人,所以我看不到他们的代码示例。在这里,我的屏幕阅读器将使这一切成为可能。 我的问题是这样的。把我的 table 摆成这样会更好吗?
page_id INT(5) NOT NULL,
id INT(8) NOT NULL AUTO_INCREMENT,
comment VARCHAR(2500) NOT NULL,
PRIMARY KEY (page_id)
如果是这样...什么是构建查询的更好方法。请记住,除非是分页页面,否则“start_at_id”为 0。我正在使用 mysql 5.6 的默认引擎,我相信这是我的(请原谅我的拼写)isam???
提前致谢。
最佳答案
您最适合查询的索引是
ALTER TABLE comments ADD UNIQUE INDEX myIndex USING BTREE (page_id, id)
这是因为 page_id
是常量,这对优化非常有利。但是你有一个 >= for id
所以不要使用默认的 HASH
索引类型。 BTREE
是最好的用途,因为 HASH
(默认)最适合用于相等/不相等的比较(参见 here)
关于php - Mysql索引最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26327592/