使用计算和联接的最佳实践

时间:2019-11-26 01:42:48

标签: sql tsql

当有一个SQL查询,并且您想使用联接/子查询来计算度量,然后将其用于业务规则时,我对最佳实践有一个一般性的疑问。 我得到了两种特殊的教学方法,但是随着职业发展和结识更多的人,他们似乎更喜欢使用其他方法。

下面,我写出了5个我所指的例子。请注意,它们并不意味着可以正常工作的SQL查询,仅是显示不同方法的示例。

"dependencies": {
    "@angular-devkit/build-angular": "^0.803.19",
    "@angular/animations": "^9.0.0-rc.3",
    "@angular/cdk": "~8.2.3",
    "@angular/common": "^9.0.0-rc.3",
    "@angular/compiler": "^9.0.0-rc.3",
    "@angular/core": "^9.0.0-rc.3",
    "@angular/forms": "^9.0.0-rc.3",
    "@angular/http": "^6.0.3",
    "@angular/material": "~8.2.3",
    "@angular/platform-browser": "^9.0.0-rc.3",
    "@angular/platform-browser-dynamic": "^9.0.0-rc.3",
    "cdk-table-exporter": "^1.2.2",
    "mat-table-exporter": "^1.2.2",
    "rxjs": "^6.0.0",
    "tslib": "^1.10.0",
    "zone.js": "^0.10.2"
  },

我想听听人们对不同方法的看法。

1 个答案:

答案 0 :(得分:2)

查询执行不同的操作。因此,您应该选择适合您需要的表格。

例如,第二个查询将left join转换为内部联接。

第四个完全不进行过滤,仅设置一个标志即可。

第一,第三和第五等价。我认为第一种方法将是编写查询的“传统”方法,或者至少我认为会有更多人这样编写查询。 (3)中的子查询是多余的(尽管不会影响性能)。并且cross apply并非所有数据库都支持。