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

Katalog Teks Lengkap SQL Server dan Pelengkapan Otomatis

Komentar awal saya, Saya menganggap nama lengkap komputer mirip dengan Nama Depan + ' ' + Nama Belakang -- dapatkah Anda membuat kueri nama depan seperti 'Carl%' dan nama belakang seperti 'Gari%' dimaksudkan untuk mengumpulkan informasi. Terima kasih telah menjawabnya.

Saya belum mencoba ini sendiri (dan itu hanya penting dengan lingkungan Anda), tetapi Anda dapat menambahkan klausa serupa ke kueri berbasis konten dan membandingkan paket kueri dengan versi konten.

Ada 3 kemungkinan query query yang jelas

A Contains version -- your existing query
A Like Version -- as I commented
A Combined version -- using like and contains

Saya rasa Anda tidak sepenuhnya benar tentang penggunaan pencarian indeks penuh yang selalu lebih cepat daripada versi LIKE, karena menurut saya jawaban yang benar adalah, tergantung.

Jika Anda memiliki indeks pada nama belakang (atau nama depan juga), versi "suka" harus melakukan pencarian terindeks. Itu akan tergantung pada distribusi kunci Anda dan berapa persentase yang cocok. Yaitu, mencari nama belakang seperti 'G%' dan nama depan seperti 'Carl%' daripada 'Gari%' dan 'Carl%' akan jauh lebih lambat jika indeks hanya pada nama belakang. Jadi, jika Anda memiliki kunci pencarian yang cukup panjang, versi LIKE kemungkinan akan lebih cepat daripada versi berisi. Anda harus menguji untuk mengetahui mana yang paling berhasil.

Mungkin versi gabungan selalu merupakan pilihan terbaik atau setidaknya cukup baik. Tapi saya pasti akan mencoba ini terlebih dahulu sebelum mengikuti strategi di bawah ini.

Strategi keseluruhan yang saya sarankan adalah:

Berhenti menggunakan pencarian inkremental sampai pengguna telah mengetikkan setidaknya beberapa karakter -- Anda mungkin membayar banyak kinerja yang dicapai untuk melakukannya karena hampir tidak memiliki nilai nyata bagi pengguna situs web Anda. Sebagai saran, jangan lakukan pencarian inkremental sebelum memasukkan minimal 3 karakter. Karena Anda tidak menyebutkan bahwa Anda sudah membutuhkan karakter minimum sebelum pencarian tambahan.

Jika ini diveto, strategi dasar yang sama, tetapi Anda tidak menjalankan pencarian tambahan sampai NN milidetik berlalu sejak karakter terakhir diketik atau karakter nomor diketik> beberapa panjang. Faktanya, karena beberapa nama belakang hanya terdiri dari 2 karakter, Anda harus benar-benar menggunakan strategi ini.

Demikian juga, saya tidak akan melakukan pencarian tambahan sama sekali terlepas dari panjangnya selama pengguna dengan cepat memasukkan karakter baru untuk menghindari pencarian sia-sia yang tidak digunakan pengguna.

Kecuali jika kueri gabungan selalu cukup baik, Miliki dua procs tersimpan yang berbeda di server Anda untuk mengembalikan hasil pencarian, satu adalah versi serupa, yang lainnya adalah versi berisi. Panggil versi yang diharapkan untuk mendapatkan hasil terbaik tergantung pada seberapa banyak nama yang diberikan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana fungsi konversi SQL bekerja saat mengonversi datetime menjadi float?

  2. membagi kolom datetime menjadi tahun, bulan dan minggu

  3. Bagaimana saya bisa menambah nilai untuk setiap iterasi INSERT INTO?

  4. Cara membuat pemicu yang akan menyimpan data yang dihapus (beberapa catatan) ke Tabel Produksi

  5. Cara tercepat untuk menentukan apakah ada catatan