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

Bagaimana cara membuat indeks untuk kolom string di sql?

Jika string Anda lebih panjang dari 900 byte, maka itu tidak bisa menjadi kunci indeks, terlepas dari apakah panjangnya variabel atau tetap.

Satu ide adalah setidaknya membuat pencarian lebih selektif dengan menambahkan kolom yang dihitung. misalnya

CREATE TABLE dbo.Strings
(
  -- other columns,
  WholeString VARCHAR(4000),
  Substring AS (CONVERT(VARCHAR(10), WholeString) PERSISTED
);
CREATE INDEX ss ON dbo.Strings(Substring);

Sekarang saat mencari baris untuk diperbarui, Anda dapat mengatakan:

WHERE s.Substring = LEFT(@string, 10)
AND s.WholeString = @string;

Ini setidaknya akan membantu pengoptimal mempersempit pencariannya ke halaman indeks di mana kecocokan persisnya paling mungkin hidup. Anda mungkin ingin bereksperimen dengan panjang itu karena tergantung pada berapa banyak string serupa yang Anda miliki dan apa yang paling membantu pengoptimal menyingkirkan satu halaman. Anda mungkin juga ingin bereksperimen dengan menyertakan beberapa atau semua kolom lain di ss indeks, dengan atau tanpa menggunakan INCLUDE klausa (apakah ini berguna akan sangat bervariasi pada berbagai faktor seperti apa lagi yang dilakukan kueri pembaruan Anda, rasio baca/tulis, dll).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Query - Ubah format tanggal dalam kueri menjadi DD/MM/YYYY

  2. Panduan pemula untuk tabel SQL

  3. Pemeran T-SQL versus Konversi

  4. DBA - Cara Membunuh Semua Proses Basis Data Di SQL Server

  5. Ratakan/gabungkan interval waktu yang tumpang tindih