Добрый день! Хочу оптимизировать таблицы и запросы к Б/Д К примеру вот один из моих запросов: Код (Text): SELECT DISTINCT u.id, u.name, u.username, u.block, DATE_FORMAT(u.lastvisitDate, '%d.%m.%Y') as lastvisitDate, DATE_FORMAT(u.registerDate, '%d.%m.%Y') as registerDate, scu.status, scu.tel1_ser, scu.tel2_ser, scu.name_ser, scu.email_ser, scu.status2, scu.user_id, scu.expects, scu.dog_send, scu.upload, scu.params, scu.nomoney, scu.drzap, scu.dopinfoinf2, scu.dogovorno, scu.dogovordata, scu.summwork, scu.summroad, scu.newor, r.statu, rep.status as statusr, rep.st_rep_sum, rep.st_rep_road, scu.predupr, newo.newo, newoz.newo as newoz, opi.pstatus FROM jos_users as u LEFT JOIN jos_scusers as scu ON(scu.user_id = u.id) LEFT JOIN jos_screport as r ON(r.statu = 1 and r.user_id = u.id) LEFT JOIN jos_screport as rep ON(((rep.st_rep_road = 0 || rep.st_rep_sum = 0) and rep.status = 1) and rep.user_id = u.id) LEFT JOIN (SELECT o.user_id, o.newo FROM jos_scorders as o where o.newo = 1) as newo ON(newo.user_id = u.id) LEFT JOIN (SELECT oz.user_id, oz.newo FROM jos_scorders as oz where oz.newo = 3) as newoz ON(newoz.user_id = u.id) LEFT JOIN (SELECT op.id_serv, op.pstatus FROM jos_scorder_prize as op where op.pstatus = 1) as opi ON(opi.id_serv = u.id) GROUP BY u.id ORDER BY scu.newor DESC, newo.newo = 1 DESC, opi.pstatus = 1 DESC, r.statu = 1 DESC, newoz.newo = 3 DESC, (rep.status = 1 and rep.st_rep_sum = 0) DESC, (rep.status = 1 and (rep.st_rep_road = 0 || rep.st_rep_road = 1)) DESC, u.id DESC Также отправлял query такого типа OPTIMIZE TABLE tbl_name в ответе вроде пишет что все ок, а заходишь в таблицу он даже по индексам сортировку не сделал(( Хочу понять как можно оптимизировать такой запрос как мой, и понять как делают оптимизацию таблиц с помощью query запросов к базе. Спасибо)) Добавлено спустя 16 минут 27 секунд: чуть не забыл, этот запрос выполняется за 0.25-0.50 секунд, и выводит 300 строк
Нашел один из вариантов сортировки таблиц! Если кому интересно, у меня тип таблицы был MyISAM и прописаны primary key, поменял тип таблицы на InnoDB теперь по ключам само все сортируется в базе как надо! тоесть раньше по умолчанию был к примеру такой порядок к примеру: user_id 4,5,234,33,35,543 и так далее после смены типа таблицы на InnoDB с примари кей по user_id он по умолчанию выводит так 4,5,33,35,234,543 то есть как надо, еще думаю попробовать отключить в запросе ORDER BY user_id DESC поскольку по умолчанию в таблице уже все отсаритровано, ведь на сортировку при запросе тоже уходит время! Ищу дальше способы оптимизации, кто может помочь в этом пишите!