В БД (в 5-ти таблицах одновременно, суммарно примерно 20000 строк) осуществляется живой поиск:
В зависимости от значения radio в форме осуществляется поиск по адресу, имени (полные Ф.И.О.) или телефону:
if ($radio == 'by_address') {
$searchby = 'address';
$key = '%' . $keywords . '%';
$orderby = 'ORDER BY `address` ASC';
} elseif ($radio == 'by_name') {
$searchby = 'name';
$key = '%' . $keywords . '%';
$orderby = 'ORDER BY `name` ASC';
} elseif ($radio == 'by_phone') {
$searchby = 'phones';
$key = $keywords . '%';
$orderby = 'ORDER BY `phones` ASC';
} else {
$searchby = 'address';
$key = '%' . $keywords . '%';
$orderby = 'ORDER BY `idnew` ASC';
}
сам запрос:
SELECT * FROM (
SELECT
id, (id + 100000) as idnew, name, address, phones, district
FROM $pack_bp
UNION ALL
SELECT
id, (id + 100000) as idnew, name, address, phones, district
FROM $pack_lp
UNION ALL
SELECT
id, (id + 100000) as idnew, name, address, phones, district
FROM $pack_rp
UNION ALL
SELECT
id, (id + 100000) as idnew, name, address, phones, district
FROM $pack_dp
UNION ALL
SELECT
id, (id + 100000) as idnew, name, address, phones, district
FROM $pack_cp
) AS foo
WHERE
upper($searchby) LIKE upper($key)
$orderby
LIMIT
0, $limit_results
Как оптимизировать запрос? Теперь поиск осуществляется очень долго секунд 20.
add:
Если все оставлять также, ввиду известного параметра $searchby, можно селектить только из нужной таблицы. Например:
if $searchby = 'by_adress' begin
select * from $first_table where $blabla
end
else if $searchby = 'by_phone' begin
select * from $second_table where $blabla
end
Проверить есть ли индексы, если нет - проставить.
Поиск по всего лишь 20000 строк будет происходить практически мгновенно, если не копировать каждый все эти строки в новую таблицу, как это происходит сейчас.
Поэтому детский лепет про "обновление в разное время" надо забыть, сделать ОДНУ таблицу, и искать по ней.
Чтобы отличать разные источники, добавить в общую таблицу отдельное поле, в которое и писать все эти "лэпэ, рэпе и пэрэ". таким образом запрос
SELECT * FROM table WHERE type='lp'
даст искомую таблицу "pack_lp" если вдруг понадобилось получить досуп к данным конкретного источника.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В базе хранится дата и время в виде 2012-09-25 12:31:130 Правильно я понимаю, что на самом деле содержимое просто так отображается, но хранится в формате...
Когда я пытался вывести данные из таблицы в бд, в таблицу на странице сайта, то столкнулся нос в нос с проблемой вывода тк
Всем привет! Прошу прощения за глупую формулировку вопроса! Не придумал лучшеТяжело описать вопрос поэтому я его нарисовал) Надеюсь поймете!...