通过优化简单查询顺序

时间:2013-10-15 11:48:05

标签: mysql

我的查询太慢了。这是一个简单的查询,可以通过order by子句从表中获取所有主题(包含1.5m记录)。这是查询。我需要帮助才能使这个查询快速运行。

SELECT * FROM _sch_forum_topics WHERE _sch_forum_topics.sch_sub_forum_id=4 ORDER BY _sch_forum_topics.topic_last_post_time DESC LIMIT 0,15 

<pre>
<h1>schema below</h1>
  <pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/">
    <!--
    - Structure schemas
    -->
    <pma:structure_schemas>
        <pma:database name="ccruize_database" collation="utf8_general_ci" charset="utf8">
            <pma:table name="_sch_forum_topics">
                CREATE TABLE `_sch_forum_topics` (
                  `topic_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
                  `forum_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
                  `sch_sub_forum_id` tinyint(3) unsigned NOT NULL,
                  `topic_attachment` tinyint(1) unsigned NOT NULL DEFAULT '0',
                  `topic_approved` tinyint(1) unsigned NOT NULL DEFAULT '1',
                  `topic_reported` tinyint(1) unsigned NOT NULL DEFAULT '0',
                  `topic_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
                  `topic_poster` bigint(20) unsigned NOT NULL DEFAULT '0',
                  `topic_views` mediumint(8) unsigned NOT NULL DEFAULT '0',
                  `topic_replies` mediumint(8) unsigned NOT NULL DEFAULT '0',
                  `unit_id` mediumint(8) NOT NULL,
                  `sch_id` mediumint(8) NOT NULL,
                  `post_text` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
                  `topic_last_post_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
                  `topic_last_poster_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
                  `topic_last_poster_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
                  `topic_last_post_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
                  `topic_post_time` datetime NOT NULL,
                  `post_edit_count` tinyint(1) NOT NULL,
                  PRIMARY KEY (`topic_id`),
                  KEY `forum_id` (`forum_id`),
                  KEY `topic_approved` (`topic_approved`),
                  KEY `topic_reported` (`topic_reported`),
                  KEY `unit_id` (`unit_id`),
                  KEY `sch_id` (`sch_id`),
                  KEY `topic_post_time` (`topic_post_time`),
                  KEY `topic` (`topic_poster`,`sch_sub_forum_id`,`topic_last_post_time`)
                ) ENGINE=InnoDB AUTO_INCREMENT=1277968 DEFAULT CHARSET=utf8;
            </pma:table>
        </pma:database>
    </pma:structure_schemas>
</pma_xml_export>
</pre>

1 个答案:

答案 0 :(得分:0)

您可以在_sch_forum_topics.topic_last_post_time字段上添加索引

或者您可以在应用程序的后端使用自定义排序算法对其进行排序