node_load还是直接查询?

ack*_*ack 2 drupal drupal-6

您使用什么经验法则决定使用node_load()或只是直接写db_query()

在我正在查看的情况下,我需要获取一些节点数据解析两个nodereference字段上的数据.所以这将是3次调用node_load().在某些时候,使用Joins直接构造查询会更有效吗?

这是用于自包含的模块,不会在其他任何地方分发或使用,所以我不相信我需要担心颠覆节点修改挂钩(或者我?).

编辑:
更多地考虑我的问题,node_load()只有当你有一个节点要抓取时才真正适用(然后可能会深入研究如我的例子中的节点参考).但是一旦你需要根据某些标准返回多个节点,你几乎被迫使用了db_query吗?Drupal是否有任何用于编写此类查询的抽象API?

Ber*_*dir 6

不是一个完整的答案(不确定自己),只是一些提示.

  • node_load()正在使用静态缓存(在Drupal 7中,您甚至可以使用entity_cache模块使其成为永久缓存).如果您正在加载的节点在同一页面上第二次使用,则该呼叫将是免费的.

  • 查询CCK表很棘手.架构结构可以根据配置完全更改,例如使用单个或多个值时.