Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо да използвате Select Top 100 процента?

Използвано е за "междинна материализация (търсене в Google)"

Добра статия:Адам Мачаник:Изследване на тайните на междинната материализация

Той дори създаде MS Connect, така че да може да се направи по-чист начин

Моето мнение "не е лошо", но не го използвайте, освен ако не сте 100% сигурни. Проблемът е, че работи само в момента, в който го правите и вероятно не по-късно (ниво на корекция, схема, индекс, брой редове и т.н.)...

Работен пример

Това може да не успее, защото не знаете в кой ред се оценяват нещата

SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100

И това може също да се провали, защото

SELECT foo
FROM
    (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
    CAST(foo AS int) > 100

Това обаче не се случи в SQL Server 2000. Вътрешната заявка се оценява и пулсира:

SELECT foo
FROM
    (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
    CAST(foo AS int) > 100

Имайте предвид, че това все още работи в SQL Server 2005

SELECT TOP 2000000000 ... ORDER BY...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ROLLBACK TRUNCATE в SQL Server

  2. Какви са ограниченията на SQL Server Compact? (Или - как се избира база данни, която да се използва на MS платформи?)

  3. Как да създадете база данни в SQL Server с помощта на TSQL или GUI - SQL Server / TSQL Урок, част 24

  4. SELECT заявка с условие CASE и SUM()

  5. Как да използвате UPDATE от SELECT в SQL Server