php - Mysql索引最佳实践

标签 php mysql

进展如何。我希望这不被认为是...的重复 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/

相关文章:

php - 基于提交数据的 Symfony2 表单验证组

php - 用于动态创建元素的 JQuery 和 PHP

php - 在wordpress中按名称获取图像

php - 第 1 行第 'budget' 列的数据被截断”

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

mysql - drupal 7 $query->where 和 DATE_FORMAT 无法识别

php - Ajax Post 500 服务器错误

javascript - 为什么我在 IE 中重新加载此页面时收到 "Leave this page"消息?

PHP fatal error : Uncaught PDOException: could not find driver

mysql - 查询未选择的最接近值