gpt4 book ai didi

mysql - SQL : How to decrease the statement execution time?

转载 作者:行者123 更新时间:2023-11-29 06:28:36 24 4
gpt4 key购买 nike

我不是 SQL 专家,我有一个 sql 语句:

SELECT * FROM articles WHERE article_id IN
(SELECT distinct(content_id) FROM contents_by_cats WHERE cat_id='$cat')
AND permission='true' AND date <= '$now_date_time' ORDER BY date DESC;

contents_by_cats 有 11000 行。

articles 有 2700 行。

变量 $now_date_time$cat 是 php 变量。

这个查询大约需要 10 秒来返回值(我想是因为它有嵌套的 SELECT 语句),而 10 秒是很长的时间。

我怎样才能以另一种方式实现这一点? (查看或加入)?

我认为 JOIN 会在这里帮助我,但我不知道如何将它正确地用于我提到的 SQL 语句。

提前致谢。

最佳答案

JOIN 正是您要寻找的。尝试这样的事情:

SELECT DISTINCT articles.* 
FROM articles
JOIN contents_by_cats ON articles.article_id = contents_by_cats.content_id
WHERE contents_by_cats.cat_id='$cat'
AND articles.permission='true'
AND articles.date <= '$now_date_time'
ORDER BY date DESC;

如果您的查询仍然没有您希望的那么快,请检查您是否在 articles.article_id 和 contents_by_cats.content_id 以及 contents_by_cats.cat_id 上有索引。根据数据,您可能还需要 articles.date 的索引。

请注意,如果 $cat$now_date_time 值来自用户,那么您应该真正准备和绑定(bind)查询,而不是仅仅将这些值转储到查询。

关于mysql - SQL : How to decrease the statement execution time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29330788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com