Sql server:内部工作

时间:2012-05-31 14:55:38

标签: sql sql-server time-complexity

其中一些可能没什么意义,但是:

  1. 解释或编译(和什么)的SQL代码?
  2. 什么是联接翻译成 - 我的意思是某些循环或什么?
  3. 算法复杂性分析是否适用于查询,例如是否可以按选择的行数编写非常糟糕的选择 - 指数?如果是这样,如何分析查询?

2 个答案:

答案 0 :(得分:1)

通过阅读Itzik Ben-Gan的一本书,你会得到很多这些答案。他详细介绍了您提到的这些主题。

http://tsql.solidq.com/books/index.htm

答案 1 :(得分:1)

嗯......相当普遍的问题,所以一些非常一般的答案

1)Sql代码解释或编译(以及什么)?

将SQL代码编译为执行计划。

2)什么是联接翻译成 - 我的意思是进入某些循环或什么?

取决于您加入的加入和表格(据我所知)。 SQL Server有一些连接原语(散列连接,嵌套循环连接),根据您的sql代码中涉及的对象,查询优化器会尝试选择最佳选项。

3)不是真的是适用于查询的算法复杂度分析,例如是否可以按选择的行数编写非常糟糕的select - 指数?如果是这样,如何分析查询?

不太确定,你的意思是什么。但有些情况下你可以做很糟糕的事情,例如使用

SELECT TOP 1 col FROM Table ORDER BY col DESC

在没有col索引的表上找到col的lagest值而不是

SELECT MAX(col)  FROM Table

您应该从SQL Server内部系列中获取部分/全部书籍。它们非常出色,非常详细地涵盖了很多东西。