Apa yang Anda nyatakan sepenuhnya benar, tabel sementara hanya akan terlihat oleh pengguna/koneksi saat ini. Namun, ada beberapa overhead dan beberapa masalah lain seperti:
- Untuk setiap dari ribuan penelusuran, Anda akan membuat dan mengisi tabel tersebut (dan menghapusnya nanti) - bukan per pengguna, per penelusuran. Karena setiap pencarian kemungkinan besar akan mengeksekusi ulang skrip, dan "per sesi" tidak berarti sesi PHP - itu berarti sesi database (koneksi terbuka).
- Anda memerlukan
CREATE TEMPORARY TABLES
hak istimewa, yang mungkin tidak punya. - Tetap saja, tabel itu seharusnya memiliki tipe MEMORY, yang mencuri RAM Anda lebih dari yang terlihat. Karena meskipun memiliki VARCHAR, tabel MEMORY menggunakan penyimpanan baris dengan panjang tetap.
- Jika nanti heuristik Anda perlu merujuk ke tabel itu dua kali (seperti
SELECT xyz FROM patternmatch AS pm1, patternmatch AS pm2 ...
) - ini tidak mungkin dilakukan dengan tabel MEMORY.
Selanjutnya, akan lebih mudah bagi Anda - dan juga untuk database - untuk menambahkan LIKE '%xyz%'
langsung ke images
tabel WHERE
ayat. Ini akan melakukan hal yang sama tanpa biaya tambahan untuk membuat TEMP TABLE dan menggabungkannya.
Bagaimanapun - ke mana pun Anda pergi - WHERE itu akan sangat lambat. Bahkan jika Anda menambahkan indeks pada images.name
kemungkinan besar Anda akan membutuhkan LIKE '%xyz%'
bukannya LIKE 'xyz%'
, sehingga indeks tidak akan digunakan.
Tidak. :)
Opsi alternatif
MySQL memiliki Pencarian Teks Lengkap (sejak 5.6 juga untuk InnoDB) yang bahkan dapat memberi Anda skor itu:Saya sangat merekomendasikan untuk membaca dan mencobanya. Anda dapat yakin bahwa database mengetahui lebih baik daripada Anda bagaimana melakukan pencarian itu secara efisien.
Jika Anda akan menggunakan MyISAM daripada InnoDB, perhatikan batasan yang sering diabaikan bahwa pencarian FULLTEXT hanya mengembalikan apa pun jika jumlah hasil kurang dari 50% dari total baris tabel.
Hal lain yang mungkin ingin Anda lihat, misalnya Solr (Pengantar yang bagus membaca topik itu sendiri akan menjadi awal dari http://en.wikipedia.org/wiki/Apache_Solr ). Kami menggunakannya di perusahaan kami dan melakukan pekerjaan dengan baik, tetapi membutuhkan beberapa pembelajaran.
Ringkasan
Solusi untuk masalah Anda saat ini (pencarian) adalah dengan menggunakan kemampuan FULLTEXT.
Untuk memberi Anda nomor, 10.000 panggilan per detik bukanlah "sepele" - dengan ratusan ribu pencarian per detik, jenis masalah kinerja yang akan Anda temui ada di mana-mana dalam pengaturan Anda. Anda akan membutuhkan beberapa server, load balancing dan banyak omong kosong teknologi luar biasa lainnya. Dan salah satunya adalah misalnya Solr;)