当面临基于多列(例如 DocumentId 和 DocumentSessionId)计算表中唯一值的任务时,自然的倾向是采用子查询方法。但是,这可能会引起对性能优化的担忧。
使用子查询的一种替代方法是创建持久计算列。这可以通过散列或连接所需的列来实现,确保可以索引并在其上构建统计数据的确定性结果。
例如,如果相关列是 DocumentId 和 DocumentSessionId,则计算列名为HashValue 可以使用哈希函数(例如 SHA1 或 MD5)创建:
ALTER TABLE DocumentOutputItems ADD COLUMN HashValue AS SHA1(DocumentId + DocumentSessionId);
一旦计算列被持久化并建立索引,一个不同的此列上的计数将相当于所需的结果:
SELECT COUNT(DISTINCT HashValue) FROM DocumentOutputItems;
通过使用持久计算列,您可以利用索引和统计信息来提高性能,从而无需子查询。
以上是如何有效地计算数据库表中多个列的唯一组合?的详细内容。更多信息请关注PHP中文网其他相关文章!