如何改善這種嵌套查詢語句,因爲我認爲這是糟糕的表現,因爲我認爲這需要很長的時間來執行,並得到了服務器負載高如何改善這種嵌套查詢statment
SELECT user_tagtag,
user_lastcontentid,
(SELECT COUNT(content_id)
FROM contents
WHERE contents.content_id > user_lastcontentid AND
contents.content_id IN (
SELECT contenttag_contentid
FROM contents_vs_tags
WHERE contenttag_tagtag = user_tagtag
)
) AS tag_newnews_no
FROM users_interests_tags
WHERE user_userid = 1
ORDER BY user_tagsorder ASC
users_interests_tags表結構是:
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| user_userid | bigint(20) | NO | PRI | NULL | |
| user_tagtag | varchar(255) | NO | PRI | NULL | |
| user_lastcontentid | bigint(20) | YES | MUL | NULL | |
+--------------------+--------------+------+-----+---------+-------+
內容表的結構是:
+---------------------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+----------------+------+-----+---------+----------------+
| content_id | bigint(20) | NO | PRI | NULL | auto_increment |
| content_title | varchar(255) | NO | MUL | NULL | |
+---------------------+----------------+------+-----+---------+----------------+
contents_vs_tags表結構是:
+----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+-------+
| contenttag_contentid | bigint(20) | NO | PRI | NULL | |
| contenttag_tagtag | varchar(255) | NO | PRI | NULL | |
+----------------------+--------------+------+-----+---------+-------+
其中contents_vs_tags.contenttag_contentid
是指數和任何幫助,將不勝感激contents.content_id
的外鍵。
請參見連接。它們是關係數據庫的基本概念。 – Strawberry 2013-05-13 00:20:10