Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
А кажись неправильный селект у тебя 17.10.06 22:39 Число просмотров: 3460
Автор: whiletrue <Роман> Статус: Elderman Отредактировано 17.10.06 22:42 Количество правок: 1
|
> > CREATE TABLE `routes`
> ( `route_id` int(11) NOT NULL,
> `p1` int(11) NOT NULL,
> `p1` int(11) NOT NULL,
тут p2 ты имел ввиду наверное...
> `ordr` int(11) NOT NULL,
> KEY `p1p2` (`p1`,`p2`) )
> ENGINE=InnoDB;
> ---
таблицу понял
ordr - это типа порядок следования ребер друг за другом... это вобщем-то лишняя инфа - ну ладно, может удобней че-то делать будет...
> Тестовых данных напихал около 340000 записей (т.е. 18000 > путей по 20 точек), но довольно однообразно. Поскольку > инетересующий путь берётся не из базы, то запрос выглядит > так: > > select route_id, count(route_id) weight
> from routes
> where p1 IN (x1, x2, ...)
> AND p2 IN (x2, x3, ...)
это не правильное услвие! Либо паре присваивай ИД и тогда IN (список ИД) или связывай таблицу саму с собой... как в моем первом селекте. Твое условие работает быстрее, но не правильно
> group by route_id
> order by weight DESC;
> ---
> Выполняется в районе 1,5 секунд. Но это на виртуальной > машине. И сильно зависит от количества путей, которые имеют > хотя бы одну общую точку. Если общая точка только одна, то > 15 мс. > В общем, я думаю, всё нормально. Спасибо.
|
|
|