Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan Semua Baris Dari Partisi Tertentu di SQL Server (T-SQL)

Saat Anda membuat tabel yang dipartisi di SQL Server, Anda menentukan nilai mana yang masuk ke setiap partisi.

Ini dilakukan saat Anda membuat fungsi partisi. Saat Anda membuat fungsi partisi, Anda menentukan nilai batas, yang menentukan nilai mana yang masuk ke setiap partisi.

Setelah Anda membuat tabel yang dipartisi, dan Anda telah memasukkan data, Anda dapat menjalankan SELECT normal pernyataan untuk mengembalikan data, seperti yang Anda lakukan dengan tabel yang tidak dipartisi (sebenarnya, bahkan tabel yang tidak dipartisi memiliki satu partisi).

Namun tahukah Anda bahwa Anda juga dapat menentukan dari partisi mana Anda ingin datanya?

Anda dapat melakukannya dengan bantuan $PARTITION fungsi sistem di WHERE . Anda ayat.

Contoh

Bayangkan kita memiliki tabel yang dipartisi yang berisi data berikut:

+---------+-------------+
| CatId   | CatName     |
|---------+-------------|
| 1       | Meow        |
| 2       | Fluffy      |
| 3       | Scratch     |
| 4       | Bulldog     |
| 5       | King George |
| 6       | Sharp       |
| 7       | Fritz       |
| 8       | Garfield    |
| 9       | Boss        |
+---------+-------------+

Dan CatId adalah kolom partisi.

Dan kami menggunakan fungsi partisi berikut untuk membuat partisinya:

CREATE PARTITION FUNCTION CatsPartitionFunction (int)  
    AS RANGE LEFT FOR VALUES (-1, 5, 100);

Ini memberitahu kita bagaimana data disimpan, sesuai dengan nilai di kolom partisi.

Jadi sekarang kita dapat menjalankan kueri yang hanya mengembalikan data dari partisi tertentu.

Mengembalikan Data dari Partisi Kedua

Berikut cara mengembalikan semua baris dari partisi kedua.

SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 2;

Hasil:

+---------+-------------+
| CatId   | CatName     |
|---------+-------------|
| 1       | Meow        |
| 2       | Fluffy      |
| 3       | Scratch     |
| 4       | Bulldog     |
| 5       | King George |
+---------+-------------+

Mengembalikan Data dari Partisi Ketiga

Dan inilah semua data dari partisi ketiga.

SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 3;

Hasil:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 6       | Sharp     |
| 7       | Fritz     |
| 8       | Garfield  |
| 9       | Boss      |
+---------+-----------+

Mengembalikan Data dari Partisi Pertama dan Terakhir

Dalam hal ini, partisi pertama saya kosong, karena tidak ada nilai negatif di CatId kolom.

SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 1;

Hasil:

(0 rows affected)

Demikian pula, partisi terakhir juga kosong, karena tidak ada cukup baris untuk mengisi partisi tersebut.

SELECT * FROM Cats
WHERE $PARTITION.CatsPartitionFunction(CatId) = 4;

Hasil:

(0 rows affected)

Ini mematuhi rekomendasi Microsoft untuk membiarkan partisi pertama dan terakhir kosong, untuk menghindari perpindahan data jika partisi tersebut dipecah atau digabungkan di masa mendatang.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan hari pertama dalam seminggu di SQL Server

  2. Bagaimana cara menambahkan atribut khusus ke string koneksi SQL?

  3. 6 Cara Menggabungkan String dan Angka di SQL Server

  4. Database yang dapat menangani>500 juta baris

  5. Gabungkan Dua Partisi Menjadi Satu di SQL Server (T-SQL)