SQL隐藏技术?

Ale*_*nic 15 mysql sql sql-server postgresql

可能重复:
SQL Server的隐藏功能

什么是SQL提供的专业/微妙技术,而不是很多人知道哪些技术也削减了代码并提高了性能?

例如:我刚学会了如何在聚合函数中使用CASE语句,它完全改变了我的方法.

还有其他人吗?

更新:基本上任何供应商.但PostgreSQL如果你只想关注一个:D

OMG*_*ies 6

SQL GROUP BY - CUBE,ROLLUP子句

分析(AKA排名,AKA窗口)功能 IE:

  • ROW_NUMBER
  • DENSE_RANK
  • NTILE
  • 过度

视图:正常和物化

如果不引用供应商特定的语法,很难说很多


Joe*_*ips 6

OVER子句(SQL Server)又称Window函数(PostgreSQL)或分析函数(Oracle)

这对我来说非常好.你可以做各种方便的事情,如计数,分区,排名等.


Mar*_*rtW 6

存在.令我惊讶的是,当EXISTS可以更快地完成工作时,有多少人在检查存在或IN(SELECT ...)子句时仍然使用COUNT(*).

最常见的是你可能会看到:

SELECT @MyVar = Count(*) FROM Table1 WHERE....
If @MyVar <> 0
BEGIN
   --do something
END
Run Code Online (Sandbox Code Playgroud)

什么时候

IF EXISTS(SELECT 1 FROM Table1 WHERE...)
BEGIN
    --don something
END
Run Code Online (Sandbox Code Playgroud)

总是更好.


Phi*_*ley 5

SELECT... EXCEPT SELECT...
Run Code Online (Sandbox Code Playgroud)

SELECT... INTERSECT SELECT...
Run Code Online (Sandbox Code Playgroud)

在挑选出不同的或共同的行 - 这对于行中的所有列 - 在集合之间是有用的(并且令人不安地有效).当你有很多列时,这非常有用.