powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помощь в оптимизации запроса
4 сообщений из 4, страница 1 из 1
Помощь в оптимизации запроса
    #39371274
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, друзья!
Код: sql
1.
2.
3.
4.
5.
6.
SELECT t1.* 
FROM ads t1
JOIN city t2 ON t1.city_id=t2.id
JOIN city_group t3 ON t1.city_id=t3.bottom_level
WHERE t1.info=0 AND t3.top_level = '358'  
ORDER BY t1.time DESC LIMIT 100



ORDER BY t1.time - жутко тормозит запрос. Пожалуйста, подскажите как обойти тормоз
...
Рейтинг: 0 / 0
Помощь в оптимизации запроса
    #39371382
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Индексы-то на таблицах хоть какие есть? покажи DDL...
2) Сколько записей возвращает запрос? порядок величины хотя бы. Сколько их вообще в таблицах? какова селективность каждой из связей?
3) Каков размер одной записи?
4) Тебе и правда нужны ВСЕ поля из t1?
...
Рейтинг: 0 / 0
Помощь в оптимизации запроса
    #39371539
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, если я Вас правильно полнял, то по:
1)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
CREATE TABLE IF NOT EXISTS `ads` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  `description` text,
  `category_id` int(11) NOT NULL DEFAULT '0',
  `city_id` int(11) DEFAULT '0',
  `adress` varchar(255) DEFAULT NULL,
  `phone` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `pass` varchar(16) DEFAULT NULL,
  `time` int(11) DEFAULT NULL,
  `info` int(1) DEFAULT '1',
  PRIMARY KEY (`id`),
  KEY `category_id` (`category_id`),
  KEY `city_id` (`city_id`),
  KEY `info` (`info`),
  FULLTEXT KEY `title` (`title`,`description`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS `city` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `city_name` varchar(255) DEFAULT NULL,
  `city_filename` varchar(255) DEFAULT NULL,
  `parent_city_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `city_filename` (`city_filename`),
  KEY `city_name` (`city_name`),
  KEY `parent_city_id` (`parent_city_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS `city_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `top_level` int(11) NOT NULL,
  `bottom_level` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `top_level` (`top_level`,`bottom_level`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;



2) Может возвратить любое к-во, зависит от к-во потомков у city, т.е. может и не быть у city потомков, а может быть 10000, соответственно у каждого city свое к-во ads в таблице ads/
3) затрудняюсь ответить
4)да
...
Рейтинг: 0 / 0
Помощь в оптимизации запроса
    #39371668
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалил все индексы (заработало быстрее в 3 раза), добавил новые индексы (скорость на уровне без индексов, т.е. в 3 раза быстрее чем со старыми индексами)
alter table `ads` add index (`category_id`,`city_id`, `info`);

Поменял индекс(ускорение в 3 раза)
alter table `city_group` add index (`bottom_level`,`top_level`);
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помощь в оптимизации запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]