【发布时间】:2015-03-16 23:09:35
【问题描述】:
这是我的 mysql 查询(3 个嵌套选择语句):
SELECT * FROM emotions
WHERE
( randomid IN
(
SELECT idpost
FROM p_n_relation
WHERE idnetwork IN
(
SELECT id
FROM networks
WHERE name = 'Babblenow'
AND isActive = 1
AND isDeleted = 0
)
AND isActive = 1 AND isDeleted = 0
) AND isActive = 1
AND isDeleted =0
AND onid = '0' AND type = 0
)ORDER BY rating DESC
每个表的情绪、p_n_relations 和网络包含大约 10k 行。
此查询的执行时间超过 30 秒,并在运行时挂起服务器!
有没有更有效的方法来做我想做的事情?大公司如何在几秒钟内做到这一点?
编辑 -
确切地说:p_n_relations : 5774、networks : 9、emotions : 427 中的行数
还有这个Query took 125.6770 sec。
我的数据库结构:
情绪表、网络表、P_n_relation 表依次排列。
http://imgur.com/bmEEavH,d3iE6Lg,twXMWU9
【问题讨论】:
-
你试过 MySQL 中的 EXPLAIN 语句了吗?
-
你的 MySQL 版本是多少?因为 MySQL
-
不抱歉,我从未听说过!
-
@Fenistil 最新版本是 5.6.22(Beta 5.7.5),所以...我在哪里可以获得 MySQL 6.0?
-
停止使用 sub select 并开始使用 JOINS 作为启动器。
标签: mysql sql performance time time-complexity