大型单表的 MySQL 查询优化 [关闭]

Posted

技术标签:

【中文标题】大型单表的 MySQL 查询优化 [关闭]【英文标题】:MySQL query optimization for large single table [closed] 【发布时间】:2013-05-10 19:31:28 【问题描述】:

我想请教一下如何让我的 mysql 查询更高效。我有一个包含 100 万条记录的帖子表。

我没有使用任何联接,它会在 5-10 秒内从数据库中获取结果 - 我不知道如何提高快速检索数据的效率。这是我的查询:

SELECT
    post_id, post_title, post_des, post_date,
    post_status, user_id, post_price
FROM
    post

这是表结构:

CREATE TABLE `post` (
  `post_id` int(11) NOT NULL AUTO_INCREMENT,
  `post_title` varchar(255) NOT NULL,
  `post_des` text NOT NULL,
  `post_date` datetime NOT NULL,
  `edit_date` datetime NOT NULL,
  `post_status` varchar(255) NOT NULL,
  `user_id` int(11) NOT NULL,
  `featuered` varchar(255) NOT NULL,
  `sub_cat_id` int(11) NOT NULL,
  `cat_id` int(11) NOT NULL,
  `post_price` varchar(100) NOT NULL,
  `post_img` varchar(255) NOT NULL DEFAULT 'uploads/no_image.jpg',
  `post_country_id` int(11) NOT NULL,
  `post_state_id` int(11) NOT NULL,
  `post_city_id` int(11) NOT NULL,
  `post_ref` varchar(255) NOT NULL,
  PRIMARY KEY (`post_id`,`post_date`)
) ENGINE=InnoDB   DEFAULT CHARSET=latin1

【问题讨论】:

我们需要更多信息。您能发布您的表结构和索引吗? 如果你想一次获取所有条记录,你无法加快速度。你?如果没有,你想获取什么样的数据? 请检查表结构。我在分类网站上使用它,它必须获取所有记录,但通过分页 php 分页使用 .... 但是当我看到 olx 和其他网站以及数百万条记录时,这些网站速度很快 .... 你说的是“分页”?试过LIMIT吗? @MShahzadAkram - 如果没有看到您的 SELECT 语句,我无法回答这个问题。如果您选择post_date,则在其上添加索引。如果您选择post_title,请在其上添加索引。 【参考方案1】:

您需要先阅读以下内容: http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

还有这个: How do MySQL indexes work?

【讨论】:

基本上我没有使用任何连接到其他表......我在这个表中有主键,我认为不需要添加更多索引。如果需要,请指导我。谢谢 即使没有其他连接,索引仍然可以提高查询性能。 @MaximeD,请在您的答案中添加更多信息;仅链接的答案不受欢迎。

以上是关于大型单表的 MySQL 查询优化 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

mysql 学习 - 掌握单表查询优化

Mysql单表太大,性能受影响求指点

「mysql优化专题」单表查询优化的一些小总结,非索引设计

Mysql优化单表查询

如何优化Mysql千万级快速分页

优化大型子表的日期查询:GiST 还是 GIN?