Scenario
I have a search facility on a website that sells products.
The page is built with PHP and MySQL searching against a Merged View that joins 10+ tables together. There are approx 12,000 records in the view with 20+ fields each.
A user can search for products matching a specific criteria using multiple (10-15) select menus.
The database then returns results based on the select menu values against the products primary keys.
Bu tüm ince ve olduğu gibi yeterince hızlı hızda çalışır.
Problem
Kullanıcıların elle onlar yerine menüleri kullanarak daha arıyor ne yazabilirsiniz böylece Ancak, aynı sayfada, ben de bir metin kutusu dahil ettik.
As the users are typing actual words rather than selecting PK's via a menu, the database has to do a word search.
For lack of knowledge on a better method, I have concantenated all of the text values from the foreign criteria tables into one big field.
The textbox then searches against words within this concantenated field.
Again, this works fine, but changes a typical search time from 0.1 seconds to 2.0 seconds.
I have indexed all of the fields from the tables used by the Merged View in an effort to improve times, this however, didn't help at all.
Question
Google kelime "Taşma" için 1 saniyede 22.200.000 sayfaları bulabilirsiniz ve benim veritabanı yalnızca 12.000 kayıtları karşı bir sözcük aramak için 2 saniye sürer beri.
Nasıl düzeni ve veritabanı arama yöntemi geliştirmek?