Nasıl bir MySQL ürün arama sonucu hızlandırabilir?

0 Cevap php

Ben bir jquery otomatik tamamlama işlevi gönderilen yazdığınız verilere dayalı bir MySQL veritabanı üzerinde bir sorgu yapıyorum. Bu çalışıyor ancak iade önerilerini almak için birkaç saniye (5-6 +) alır. Iyi bir milyonun üzerinde girdileri gitmek bekleniyor şu anda veritabanında yaklaşık 200.000 ürün kayıt bulunmaktadır. Ben bir kez daha girdiler eklenir, bu şey hızlandırmak nasıl, birisi zaten tüm bunları fayda vermez tam arama sorgusu, yazdığınız önce sonuçlar muhtemel göstermek asla bu nedenle duruyor.

MySQL tablolar şunlardır:

CREATE TABLE `products` (
  `id` int(12) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  `description` text NOT NULL,
  `category` int(12) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `name` (`name`),
  KEY `category` (`category`)
) ENGINE=MyISAM;

CREATE TABLE `products_pics` (
  `id` int(12) NOT NULL auto_increment,
  `product_id` int(12) NOT NULL default '0',
  `thumb` blob NOT NULL,
  `image` longblob NOT NULL,
  `type` varchar(6) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `product_id` (`product_id`),
) ENGINE=MyISAM;

Arama ve sonuç dönüş için PHP kodu:

if(isset($_REQUEST['queryString'])) {
 $queryString = addslashes($_REQUEST['queryString']);
 if(strlen($queryString) > 0) {
  $result = mysql_query("SELECT * FROM products WHERE name LIKE '%" . $queryString . "%' ORDER BY name LIMIT 8", $db);
  if(mysql_num_rows($result) > 0){
        while($myrow = mysql_fetch_array($result)){
        $query = mysql_query("SELECT id FROM products_pics WHERE product_id='$myrow[id]' LIMIT 1", $db);
        if(mysql_num_rows($query) > 0){
        echo '<a href=""><img src="/ajax/search_images.php?id=' . $myrow[id] . '" width="55" border="0" alt="" />';
        }
        else {
        echo '<a href=""><img src="/images/items/no-img.jpg" width="55" border="0" alt="" />';
        }
        $name = stripslashes($myrow[name]);
        if(strlen($name) > 35) { 
         $name = substr($name, 0, 35) . "...";
        }             
        echo '<span class="searchheading">' . $name . '</span>';
        $description = stripslashes($myrow[description]);
        if(strlen($description) > 80) { 
         $description = substr($description, 0, 80) . "...";
        }
        echo '<span>' . $description . '</span></a>';
       }
       echo '<span class="seperator"></span>';
   } 
  }
 } 

Tekrar teşekkürler çocuklar, herhangi bir yardım takdir edilmektedir.

0 Cevap