当前位置: 首页 > 面试题库 >

MYSQL,很慢的顺序

伯建安
2023-03-14
问题内容

我有两张桌子。一个是在用户ID上带有主键的User表,另一个是使用外键引用该用户表的表。

“用户”表仅具有一个条目(目前),而另一个表则具有一百万个条目。

以下联接使我发疯:

 SELECT p0_.*, p1_.*
 FROM photo p0_, User p1_
 WHERE p0_.user_id = p1_.user_id
 ORDER BY p0_.uploaddate DESC Limit 10 OFFSET 100000

在速度非常快的计算机上,查询耗时12秒,而排序的时间为0.0005秒,而没有排序的时间为0.0005秒。

我在user_id(IDX_14B78418A76ED395)上有一个索引,在user_id和uploaddate上有一个复合索引(“ search2”)。

解释显示以下内容:

+----+-------------+-------+------+------------------------------+----------------------+---------+---------------------+-------+---------------------------------+
| id | select_type | table | type | possible_keys                | key                  | key_len | ref                 | rows  | Extra                           |
+----+-------------+-------+------+------------------------------+----------------------+---------+---------------------+-------+---------------------------------+
|  1 | SIMPLE      | p1_   | ALL  | PRIMARY                      | NULL                 | NULL    | NULL                |     1 | Using temporary; Using filesort |
|  1 | SIMPLE      | p0_   | ref  | IDX_14B78418A76ED395,search2 | IDX_14B78418A76ED395 | 4       | odsfoto.p1_.user_id | 58520 |                                 |
+----+-------------+-------+------+------------------------------+----------------------+---------+---------------------+-------+---------------------------------+

表定义:

CREATE TABLE `photo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`album_id` int(11) DEFAULT NULL,
`exif_id` int(11) DEFAULT NULL,
`title` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`width` int(11) NOT NULL,
`height` int(11) NOT NULL,
`uploaddate` datetime NOT NULL,
`filesize` int(11) DEFAULT NULL,
`path` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`originalFilename` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`mimeType` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`description` longtext COLLATE utf8_unicode_ci,
`gpsData_id` int(11) DEFAULT NULL,
`views` int(11) DEFAULT NULL,
`likes` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UNIQ_14B78418B0FC9251` (`exif_id`),
UNIQUE KEY `UNIQ_14B7841867E96507` (`gpsData_id`),
KEY `IDX_14B78418A76ED395` (`user_id`),
KEY `IDX_14B784181137ABCF` (`album_id`),
KEY `search_idx` (`uploaddate`),
KEY `search2` (`user_id`,`uploaddate`),
KEY `search3` (`uploaddate`,`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


CREATE TABLE `user` (
`user_id` int(11) NOT NULL,
`photoCount` int(11) NOT NULL,
`photoViews` int(11) NOT NULL,
`photoComments` int(11) NOT NULL,
`photoLikes` int(11) NOT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我该如何加快查询速度?


问题答案:

似乎您正遭受MySQL无法进行后期行查找的困扰:

  • MySQL ORDER BY / LIMIT性能:晚行查找
  • 后排查询:InnoDB

尝试这个:

SELECT  p.*, u.*
FROM    (
        SELECT  id
        FROM    photo
        ORDER BY
                uploaddate DESC, id DESC
        LIMIT   10
        OFFSET  100000
        ) pi
JOIN    photo p
ON      p.id = pi.id
JOIN    user u
ON      u.user_id = p.user_id


 类似资料:
  • 问题内容: (重要)编辑3: 单独运行testajax2.php而 _不是_Ajax。持续时间大致相同,为1.02-1.03秒。所以我想这意味着问题出在PHP- MySQL或XAMPP中? 当我通过phpMyAdmin查询运行它时,结果如下:显示第0-29行(总计约50行。查询用时 0.0015秒 )。看来问题根本不在于Ajax,而可能在于PHP。我怎样才能解决这个问题?(我也刚刚编辑了问题标题。

  • 如果FreeRADIUS的部署为许多用户进行身份验证和记帐,则必须确保它按预期执行。 您可以从基线速度测试开始,该测试可以在将来用作参考。 要进行速度测试,JRadius Simulator非常理想且易于使用。

  • 问题内容: 我有一个大约有110.000.000项的大型mysql表 表设计为: 现在我要查询一个普通查询: Explain语句给我: 该查询似乎很慢(约185秒),但我不知道这是否仅是由于表中的项目数量所致。您是否提示我如何加快查询或查表的速度? 问题答案: 我通常都同意Drap,但是以下查询变体可能更加有效,尤其是对于更大的LIMIT: 要求和索引。

  • 问题内容: 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 Java 因其速度慢而享有一定的声誉。 Java真的很慢吗? 如果是,为什么?瓶颈在哪里?是因为JVM效率低下吗?垃圾收集?纯字节码库而不是JNI包装的C代码?许多其他语言都具有这些功能,但是它们并没有因速度慢而享有盛誉。 问题答案: 现代Java是最快的语言之一,即使它仍然是内存消耗大的

  • 问题内容: 我的Java代码和MySQL数据库之间的连接速度非常慢,这是一个问题。我不知道瓶颈在哪里。 我的程序或多或少是一个聊天机器人。用户输入内容后,我的程序将句子分解为单词,然后将每个单词的单词发送到数据库。如果在该处找到了某些内容,则用户将获得输出。该数据库位于外部服务器上,但我也尝试连接到我旁边的PC。两者都很慢。 我通常在另一个工作正常的地方尝试了一次连接,而且在大多数情况下都很快。

  • 我是JetBrains的PyCharm的超级粉丝,但我确实遇到了一些问题,我想也许我会在这里问一下。 它意外挂起,这种情况经常发生。总的来说,这对我来说有点慢,我想知道一些如何提高IDE性能的技巧 我能解决的唯一办法是去PyCharm- 我的配置:Mac OSX Lion在MacBook Pro(2010年年中)上运行,8GB内存 现在,我明白,如果没有任何快照或更多关于正在发生的事情的信息,诊断