Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
сам запрос
-----------
SELECT
*,
MAX(year) AS max_year,
MIN(year) AS min_year
FROM `search_by_vehicle`
GROUP BY car, modification, param_pcd, param_dia, param_nut, param_bolt,
tyres_factory, tyres_replace, tyres_tuning, wheels_factory,
wheels_replace, wheels_tuning
---------------
EXPLAIN выдает типа
possible_keys = null
Using temporary; Using filesort
Неактивен
Покажите
show create table search_by_vehicle;
и
кол-во строк в таблице и уникальных значений для столбцов перечисленных в group by
Неактивен
Друг, раздели хотя бы на две таблицы.
В одну — все по машине до болтов. В другую — все, что относится к колесам. И еще одну таблицу для соединения машин и колес.
И вообще машины сразу стоит вносить с двумя колонками: year_from и year_to, а то вместо одной машины 12, если машина производилась в течение 12 лет, это как-то неинтересно. +)
11 лишних строк только по одной машине.
Неактивен
vasya написал:
Покажите
show create table search_by_vehicle;
и
кол-во строк в таблице и уникальных значений для столбцов перечисленных в group by
CREATE TABLE `search_by_vehicle` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`vendor` varchar(255) NOT NULL,
`car` varchar(255) NOT NULL,
`year` varchar(255) NOT NULL,
`modification` varchar(255) NOT NULL,
`param_pcd` varchar(10) NOT NULL,
`param_dia` varchar(8) NOT NULL,
`param_nut` varchar(32) NOT NULL,
`param_bolt` varchar(10) NOT NULL,
`tyres_factory` varchar(100) NOT NULL,
`tyres_replace` varchar(300) NOT NULL,
`tyres_tuning` varchar(300) NOT NULL,
`wheels_factory` varchar(200) NOT NULL,
`wheels_replace` varchar(400) NOT NULL,
`wheels_tuning` varchar(300) NOT NULL,
PRIMARY KEY (`id`),
KEY `car` (`car`),
KEY `modification` (`modification`),
KEY `car-mod` (`car`(100),`modification`(100))
) ENGINE=InnoDB AUTO_INCREMENT=20727 DEFAULT CHARSET=utf8
строк 20000
уникальных значений - не очень понял вопрос. после группировки получатеся примерно 4000 строк. или нужны данные по каждому столбцу?
Александр Трофимов: ну если бы все так просто было Ж)
эта таблица - покупная и рассчитана на последующие апдейты. поэтому очень не хочется ее как-то менять. я планировал из указанного запроса сделать вьюху и на ней потом уже строить запросы для фронт-энда. но вот столкнулся с тормозами. запросы выполняются по 1-2 сек, что для моих целей неприемлемо долго.
Неактивен
по каждому столбцу, т.е.
select count(car), count(modification), count(param_pcd), ... from `search_by_vehicle`;
Неактивен
Не, не, это херовая практика. +)
Я через это проходил.
Обновление можно сделать и по трем таблицам, если файл обновления не меняется.
Иначе в будущем сто процентов поймаешь косяка.
Да и развивать такие БД потом очень сложно.
Неактивен
vasya написал:
по каждому столбцу, т.е.
select count(car), count(modification), count(param_pcd), ... from `search_by_vehicle`;
Разве здесь не надобно ли к каждой скобке добавить DISTINCT, дабы получить настоящее число уникальных значений по каждому столбцу?
select count(DISTINCT car), count(DISTINCT modification), count(DISTINCT param_pcd), ... from `search_by_vehicle`;
Неактивен
Да, вы правы.
Неактивен
Страниц: 1