Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zamów, nie pracując, gdy wstawisz w tabeli tymczasowej

Tabele SQL reprezentują nieuporządkowane zestawy. Czy jest w tym coś niejasnego?

Kiedy SELECT z tabeli, wyniki są nieuporządkowane . Jedynym wyjątkiem jest użycie ORDER BY w zewnętrznym zapytaniu. Dołącz więc ORDER BY a wyniki będą w porządku.

EDYCJA:

Możesz wyeliminować pracę dla sortowania, wprowadzając klastrowany klucz podstawowy.

create table #temp (
    Id int identity(1,1) primary key clustered, 
    SKU varchar(10),
    QtyRec int,
    Expiry date,
    Rec date
);

Kiedy to zrobisz:

insert into #temp(SKU, QtyRec, Expiry, Rec)
    select SKU, QtyRec, Expiry, Rec
    from @Data
    order by id;

Klastrowy klucz podstawowy w #temp gwarantuje, że będzie w kolejności określonej w order by . Następnie zapytanie:

select *
from #temp
order by id;

zwróci wyniki w kolejności, używając indeksu klastrowego. Żadne sortowanie nie będzie potrzebne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw dane w SQL Server 2017

  2. Wewnętrzne siedem sortowań SQL Server – część 2

  3. Wielowątkowa aplikacja C# z wywołaniami bazy danych SQL Server

  4. Oblicz łączną liczbę dni roboczych między dwiema datami

  5. Jak włączyć zapytania rozproszone ad hoc