直接从数据库获取发布和到期日期 - 请确认查询是否正确

时间:2011-10-14 19:24:57

标签: database api umbraco

我的网站有点庞大,使用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

1 个答案:

答案 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