sql-server-2005 - 在查询中两次使用相同的函数 (SQL Server)

标签 sql-server-2005 query-optimization

在 SQL Server 2005 中,当我编写一个查询时

SELECT m.*, a.price p1, b.price p2
FROM mytable m
LEFT JOIN products_table_1 a
ON my_hash_function(m.name) = a.hash
LEFT JOIN products_table_2 b
ON my_hash_function(m.name) = b.hash

my_hash_function(m.name)计算两次还是只计算一次?如果两次,我如何使用变量来避免这种情况?

最佳答案

select  mm.*, a.price p1, b.price p2 from   
    (SELECT m.*, my_hash_function(m.name) as name
    FROM mytable m) mm
    LEFT JOIN products_table_1 a
    ON mm.name = a.hash
    LEFT JOIN products_table_2 b
    ON mm.name = b.hash

关于sql-server-2005 - 在查询中两次使用相同的函数 (SQL Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161236/

相关文章:

sql - 将列添加到现有表并将默认值添加到另一列而不使用动态sql

sql-server - 如何在 SQL Server 2005 Express 中启用全文索引?

sql-server-2005 - SQL Server 2005 Management Studio - 恢复意外关闭的选项卡

SQL:内连接两个海量表

sql-server - 将数据库表从一个 SQL Server 数据库表更新到另一个?

sql - 是否有一个程序可以显示现有数据库中的 SQL 模式图?

optimization - 优化我的 mysql 查询以使用索引进行排序

sql - 使用多个连接、排序和小限制优化 PostgreSQL 查询

sql - 用于检索 'most popular' 表行的高效数据库设计

python - 大量属性的单独数据存储查询顺序