我的网站有点庞大,使用Umbraco API循环遍历所有节点以获取发布和到期日期超时..所以我编写了以下查询来查找节点的过期和发布日期..
SELECT D.nodeId, D.releaseDate, D.expireDate
FROM dbo.cmsDocument D
WHERE D.newest = 1 AND
(
D.releaseDate IS NOT NULL
OR
D.expireDate IS NOT NULL
)
任何人都可以确认是对还是错......如果错了,获得这些价值的正确方法是什么..
感谢
ANZ
答案 0 :(得分:1)
我对Umbraco一无所知,但我做知道并非所有dbms都会在评估像your_column_name IS NOT NULL
这样的表达式时使用索引。
如果您的目标dbms不将IS NOT NULL
视为可搜索表达式,那么它将不使用索引。相反,它会进行全表扫描,这可能需要很长时间才能在大桌子上进行。如果需要很长时间,我认为暂停仍然是可能的。
releaseDate或expireDate上也可能没有索引。在一张大桌子上,这也会减慢你的速度。
如果你想知道今天之前哪些文件过期,也许你可以删除它们,我(或许天真地)期望这个标准的SQL语句能够工作。 (但我也希望一些Umbraco管家模块能够做到这一点。)
select nodeId
from cmsDocument
where expiredate < CURRENT_DATE