SQL Server SEDE查询不返回行

i86rm4rw  于 2023-01-25  发布在  其他
关注(0)|答案(2)|浏览(122)

我在https://data.stackexchange.com/stackoverflow上有以下查询

SELECT TOP 10 * FROM Posts
WHERE PostTypeId = 2 
  AND CreationDate > '2022-05-06'
  AND CommentCount = 3
  AND Tags LIKE '%php%'
ORDER BY CreationDate DESC

我试图得到的答案,今天张贴在php标签,也有3条评论。
但我收到的却是:
在51274毫秒内返回0行

cqoc49vn

cqoc49vn1#

我确信SE Data Explorer并不总是最新的,但问题似乎出在其他地方。
Tags列是null的答案。
如果你想得到标签,你必须查询问题,你可以得到列ParentId.
使用自联接:

SELECT TOP 10 p1.* 
FROM Posts p1 INNER JOIN Posts p2
ON p2.Id = p1.ParentId
WHERE p1.PostTypeId = 2 
  AND p2.Tags LIKE '%php%' 
  AND p1.CommentCount = 3
  -- AND <your date condition here>
ORDER BY p1.CreationDate DESC

请参见demo

vptzau2j

vptzau2j2#

首先,你的查询看起来非常有选择性。给予我今天所有PHP问题的答案,答案中有3条评论。我不知道你会不会找到很多这样的评论。也许你可以把你的标准改为CommentCount >= 3(并以正确的方式跟踪标签),但即使有了这些修复,* 答案 * 上的评论也不会经常那么高(或停留很长时间)。
其次,SEDE * 每周 * 更新一次,* 在星期天更新,请参见this questionthis question(链接到this query,可以使用它来监视状态)和this question(碰巧只有this weekend, the normal refresh failed,但这不会导致这个特定问题)。
SEDE刷新是一个扩展操作,因为数据会以各种方式进行转换(结构会被简化以使您的查询更容易,数据会被清理以删除任何PII)。因此,在周六,不,您不会在那里找到今天(当然,在前一个周日之后)的任何帖子。
你可以检查一下this query,看看为什么你的WHERE子句选择性太强了:

SELECT MAX(CreationDate) FROM Posts;

一旦选择了有效的 date 条件,就可以修复查询中的其他问题。

相关问题