Sql 在Drupal中保持数据完整性:

Sql 在Drupal中保持数据完整性:,sql,drupal,query-optimization,data-integrity,Sql,Drupal,Query Optimization,Data Integrity,我碰巧在Drupal中开发了一个模块,由于一些视图限制,我不得不使用自定义SQL。这让我在节点修改方面遇到了一些问题,我得出了结论 在Drupal中,最好使用其本机方法处理任何数据。否则,可能会出现数据完整性问题 而且,即使希望在Drupal中优化SQL查询,显然,对于真正的瓶颈,在极少数情况下也应该这样做 与此困境相关的经验是什么-直接sql查询与Drupal模块/函数?在更新数据时,您应该始终使用Drupal默认值,即使您以后需要对自定义表等执行其他查询。这并不明显(不深入代码)Drupal

我碰巧在Drupal中开发了一个模块,由于一些视图限制,我不得不使用自定义SQL。这让我在节点修改方面遇到了一些问题,我得出了结论 在Drupal中,最好使用其本机方法处理任何数据。否则,可能会出现数据完整性问题

而且,即使希望在Drupal中优化SQL查询,显然,对于真正的瓶颈,在极少数情况下也应该这样做


与此困境相关的经验是什么-直接sql查询与Drupal模块/函数?

在更新数据时,您应该始终使用Drupal默认值,即使您以后需要对自定义表等执行其他查询。这并不明显(不深入代码)Drupal在各种操作上做了什么,如果你复制了一个操作的代码并把它放在你的函数中,你将不得不从那时起观察核心的变化


视图的一个技巧可能对您有所帮助,即如果视图几乎满足了您的需求,那么您可以看到由视图生成的查询,并将其复制到您自己的代码中。这消除了视图的其余开销,并且可以大大提高性能。

+1因为在更新/插入数据时总是使用drupal函数——即使您遵循核心模块的行为,您也很容易错过其他模块在大量钩子操作中所做的事情。直接从数据库中读取通常是可以的,但是要注意,您可能会丢失其他模块也会通过钩子添加的数据。