|
|
|
| Очень долго отрабатывает запрос
SELECT lot.*,
(SELECT img FROM lot_images WHERE idGeneral = lot.id LIMIT 0, 1 ) AS img_name,
(SELECT folder FROM lot_images WHERE idGeneral = lot.id LIMIT 0, 1 ) AS img_folder,
(SELECT id FROM lot_images WHERE idGeneral = lot.id LIMIT 0, 1 ) AS img_id,
(SELECT name FROM region WHERE region_id = lot.region_id LIMIT 0, 1 ) AS region_name,
(SELECT name FROM city WHERE city_id = lot.city_id LIMIT 0, 1 ) AS city_name,
(SELECT namePage FROM category WHERE id = lot.idCategory LIMIT 0, 1 ) AS category_name_page,
(SELECT name FROM category WHERE id = lot.idCategory LIMIT 0, 1 ) AS category_name,
(SELECT namePage FROM category_general WHERE id = lot.idCategoryGeneral LIMIT 0, 1 ) AS gen_category_name_page,
(SELECT name FROM category_general WHERE id = lot.idCategoryGeneral LIMIT 0, 1 ) AS gen_category_name
FROM lot ORDER BY dateStart DESC
|
Подскажите как можно его оптимизировать
До этого был код, который отрабатывал на порядок быстрее, но он ведь с точки зрения оптимизации не правильный
<?
$result = mysql_query("SELECT * FROM lot WHERE id_user = '".$user_online['id_user']."' ORDER BY dateStart DESC LIMIT $start, $num ");
if (mysql_num_rows($result))
{
while($mes = mysql_fetch_array($result))
{
$query = mysql_query("SELECT * FROM lot_images WHERE idGeneral = '{$mes['id']}' ");
$show_img = mysql_fetch_assoc($query);
$query = mysql_query("SELECT * FROM region WHERE region_id = '{$mes['region_id']}' ");
$region = mysql_fetch_assoc($query);
$query = mysql_query("SELECT * FROM city WHERE city_id = '{$mes['city_id']}' ");
$city = mysql_fetch_assoc($query);
$query = mysql_query("SELECT * FROM category WHERE id = '{$mes['idCategory']}' ");
$category = mysql_fetch_assoc($query);
$query = mysql_query("SELECT * FROM category_general WHERE id = '{$mes['idCategoryGeneral']}' ");
$category_general = mysql_fetch_assoc($query);
......
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Den*s
(11.08.2015 в 20:52)
| | Смотрите в сторону | |
|
|
|
|
|
|
|
для: KPETuH
(12.08.2015 в 11:06)
| | Вопрос про индексы, если поля, по которым идёт выборка проиндексировать (обычный индекс).
На сколько это увеличит скорость SELECT-ов и на сколько потяжелеет база? | |
|
|
|
|
|
|
|
для: Den*s
(12.08.2015 в 14:49)
| | Кстати не совсем понятна запись
в каждом подзапросе, у вас везде есть больше одного ответа на подзапрос? | |
|
|
|
|
|
|
|
для: KPETuH
(12.08.2015 в 15:19)
| | Больше одного ответа только в картинках
(SELECT img FROM lot_images WHERE idGeneral = lot.id LIMIT 0, 1 ) AS img_name,
(SELECT folder FROM lot_images WHERE idGeneral = lot.id LIMIT 0, 1 ) AS img_folder,
(SELECT id FROM lot_images WHERE idGeneral = lot.id LIMIT 0, 1 ) AS img_id,
|
остальные возвращают только один, лимиты пошли мусором | |
|
|
|