SELECT `ui`.`id` AS `image_id`,
`ui`.`user_id` AS `user_id`,
`ui`.`create_date` AS `image_create_date`,
`ui`.`name` AS `image_name`,
`ui`.`title` AS `image_title`,
`ui`.`descr` AS `image_descr`,
`ui`.`views` AS `image_views`,
`ui`.`plus` AS `image_plus`,
`ui`.`minus` AS `image_minus`,
`bu`.`first_name` AS `user_first_name`,
`bu`.`last_name` AS `user_last_name`,
`bu`.`photo` AS `user_photo`,
COUNT(`c`.`id`) AS `com_cnt`
FROM `user_images` AS `ui`
LEFT JOIN `bpl_users` AS `bu` ON `bu`.`id` = `ui`.`user_id`
LEFT JOIN `comments` AS `c` ON `c`.`image_id` = `ui`.`id`
GROUP BY `ui`.`id`
ORDER BY `ui`.`create_date` DESC LIMIT 9
CREATE INDEX `image_id_idx` ON `comments` (`image_id`);
WHERE f1=xx AND f2=xx AND f3=xx
, WHERE f1=xx AND f2=xx
или WHERE f1=xx
. Если нужно ускорить поиск по другой части ключа (например WHERE f2=xx
, то надо строить отдельный индекс. SELECT * FROM geodata._cities WHERE `country_id` = 1 AND `region_id` IS NULL;
Получаем 230 строк с кучей ненужных вариантов.SELECT * FROM geodata._cities WHERE `country_id` = 1 AND `region_ru` IS NULL;
Получаем 39 строк с кучей ненужных вариантов.SELECT * FROM geodata._cities WHERE `country_id` = 1 AND `region_ru` IS NULL AND `region_id` IS NULL;
Получаем+-------------------------------+---------+------------------------------+
| title_ru | area_ru | title_ru |
+-------------------------------+---------+------------------------------+
| Москва | NULL | Москва |
| Девяткино, Ленинградская обл. | NULL | Девяткино,Ленинградская обл. |
| Санкт-Петербург | NULL | Санкт-Петербург |
+-------------------------------+---------+------------------------------+
SELECT `rt`.`sum` AS `sum`, `rt`.`work_id` AS `work_id`, `t`.`serial` AS serial, `mk`.`name` AS `marka`,
`md`.`name` AS `model`, DATE_FORMAT(`rt`.`data`, '%d.%m.%Y') AS `data`
FROM `remont_tech` AS `rt`
LEFT JOIN `tech` AS `t` ON `rt`.`tech_id` = `t`.`id`
LEFT JOIN `marka` AS `mk` ON `t`.`marka` = `mk`.`id`
LEFT JOIN `model` AS `md` ON `t`.`model` = `md`.`id`
WHERE `rt`.`tech_id` = '$techs_id'
AND `rt`.`status` != 'delete'
AND TO_DAYS(NOW()) - TO_DAYS(`rt`.`data`) <= 30
ORDER BY `rt`.`data`
$tech = mysql_query("SELECT SUM(`rt`.`sum`) ".
" FROM `tech` AS `t` ".
" INNER JOIN `remont_tech` AS `rt` ON `t`.`id` = `rt`.`tech_id` ".
" WHERE `t`.`tech_cat` = '".mysql_real_escape_string($cat_id)."' ".
" AND `t`.`status` = 'normal'");
if ($techs = mysql_fetch_array($tech))
$summa = $techs[0];