У меня есть таблица с 500 000 записей, все, что я хочу сделать, это разместить запрос выбора с помощью шаблона LIKE с использованием лимита, независимо от того, что я делаю, это занимает достаточно много времени показать результат. Это ничего не стоит для меня, как я могу заставить его работать лучше? Мой запрос нижеmysql запрос для длинных записей, достаточно долго, чтобы показать записи
QUERY
if (isset($_GET['res'])) {
$value = $_GET['res'];
$val = explode(" ", $value);
$query = "SELECT productid, productname, retailprice, lmnr, suplier
FROM comp where productname = '$value' ";
$count = count($val);
for ($i = 0; $i < $count; $i++) {
$query .= " union Select productid, productname, retailprice, lmnr, suplier
from comp where productname like '%" . $val[$i] . "%' ";
}
$query .=" GROUP BY productid, productname, retailprice, lmnr, suplier LIMIT $start, $limit";
}
$result_query = $db->query($query);
Любая помощь приветствуется, спасибо
Примечание я сломала этот запрос в союзы, как она используется для поиска цели, я хотите выполнить поиск запросов со всех возможных совпадений строки, разделяющей с помощью SPACES, т. е. A TEST QUERY. Должны быть приняты как «% A%», «% TEST%», «% QUERY%»
[mysql-indexes] (http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html) – vbrmnd
У вас есть указатель на имя продукта? –
500000 записей с объединением/группой, где с LIKE% ..% с лимитом, это приведет к использованию «Использование временного файла с файловым контуром» с помощью глубоких сканирований (считайте стартовые стартовые значения), и, самое похожее, это создает временную таблицу на основе диска на основе MyISAM (что нужно, сгруппировавшись на диске с помощью quicksort algoritme, что будет медленным с чтением и записью readom i/o), потому что наиболее похоже, что результат не вписывается в память .. EXPLAIN оператор будет EXPLAIN все это ... –