F0x
Новичок
Выемка результатов запроса mysql с минимальными затратами
Подкиньте идеек, как отказаться от следующей схемы действий:
Вообразим таковое положение:
Есть две большие таблицы, содержащие каждая до 1 000 000 записей. Поиск инфо производится по ним обеим одновременно соединяя их в общем запросе функцией мускула UNION.
Этапы:
1) Производится подсчет полученных результатов двумя запросами: первый запрос подсчитывающий число результатов из первой, а второй из второй таблицы:
$a = mysql_query("SELECT COUNT(*) FROM a WHERE string LIKE %search string%");
$b = mysql_query("SELECT COUNT(*) FROM b WHERE string LIKE %search string%");
Для чего используются данные запросы: они ведут подсчет полученных результатов, записывая полученную инфо в статистику поиска, и что важно, дают возможность использовать полосу навигации страниц - поскольку найденное число результатов уже известно.
2) Собственно производится главный запрос с приминением UNION, объединяющий таблицы a и b и выводящий через цикл результаты поиска: while($RESULT = mysql_fetch_array($request))
{
}
Так вот посоветуйте, господа присяжные, как можно оптимизировать подобную схему из двух этапов на схему из одного, так таки число записей в таблицах не маленькое - время поиска инфо по данной схеме крайне неприемлемое и при наилучшем стечении превышает 20 секунд
Подкиньте идеек, как отказаться от следующей схемы действий:
Вообразим таковое положение:
Есть две большие таблицы, содержащие каждая до 1 000 000 записей. Поиск инфо производится по ним обеим одновременно соединяя их в общем запросе функцией мускула UNION.
Этапы:
1) Производится подсчет полученных результатов двумя запросами: первый запрос подсчитывающий число результатов из первой, а второй из второй таблицы:
$a = mysql_query("SELECT COUNT(*) FROM a WHERE string LIKE %search string%");
$b = mysql_query("SELECT COUNT(*) FROM b WHERE string LIKE %search string%");
Для чего используются данные запросы: они ведут подсчет полученных результатов, записывая полученную инфо в статистику поиска, и что важно, дают возможность использовать полосу навигации страниц - поскольку найденное число результатов уже известно.
2) Собственно производится главный запрос с приминением UNION, объединяющий таблицы a и b и выводящий через цикл результаты поиска: while($RESULT = mysql_fetch_array($request))
{
}
Так вот посоветуйте, господа присяжные, как можно оптимизировать подобную схему из двух этапов на схему из одного, так таки число записей в таблицах не маленькое - время поиска инфо по данной схеме крайне неприемлемое и при наилучшем стечении превышает 20 секунд