Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
undiabler
4 / 4 / 0
Регистрация: 25.07.2012
Сообщений: 28
#1

Оптимизировать запрос под MySql

10.02.2015, 18:17. Просмотров 281. Ответов 1
Метки нет (Все метки)

Суть, есть вектор строковых значений, длинна вектора динамическая, строковые значения ограниченны длинной 255 символов. Для расчетов нужно получить численные представления этих строковых значений(грубо говоря построить все уникальные в ряд и пронумеровать). После этого нужно сделать выборку всех векторов по условию при этом заменив строковые данные - численными.

C переназначением проблем нет. А вот с выборкой проблема. Выборку делает вот такой сгенерированный запрос (на примере вектора из 4х параметров):

SQL
1
2
3
4
5
6
SELECT rm0.map_id AS o0 , rm1.map_id AS o1 , rm2.map_id AS o2 , rm3.map_id AS o3 , t.total, t.good
FROM  ( SELECT o0 , o1 , o2 , o3 , COUNT(*) AS total, SUM(converted) AS good FROM collect WHERE group_id=2 GROUP BY o0 , o1 , o2 , o3  ) AS t
 INNER JOIN remap AS rm0 ON ( rm0.group_id = 2 AND rm0.o_n = 'o0' AND rm0.name = t.o0 )  
 INNER JOIN remap AS rm1 ON ( rm1.group_id = 2 AND rm1.o_n = 'o1' AND rm1.name = t.o1 )  
 INNER JOIN remap AS rm2 ON ( rm2.group_id = 2 AND rm2.o_n = 'o2' AND rm2.name = t.o2 )  
 INNER JOIN remap AS rm3 ON ( rm3.group_id = 2 AND rm3.o_n = 'o3' AND rm3.name = t.o3 )
данный запрос при 15 тысячах данных (1400 уникальных элементов в remap и 15тысяч всего данных в collect) вешает MySql намертво (20-25секунд запрос идет), PostreSql на той же машине выдает 615 мсек что приемлемо.

Вопросы:
  1. Можно ли оптимизировать данный запрос под mysql?
  2. Какие есть еще варианты решения подобной задачи?
  3. Какие в этом случае стоит использовать индексы?
  4. Можно ли в явном виде сделать join с пересечением по всем 4м параметрам?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2015, 18:17
Ответы с готовыми решениями:

Как оптимизировать базу под запрос?
База вцелом должна хранить вот такие параметры: fames VARCHAR(100) names...

Как оптимизировать MySQL?
.Здравствуйте ! Обращаюсь к Вам так как являюсь новичком в этой области....

Оптимизировать запрос
Здравствуйте. Пытаюсь составить запрос, выполняющий выборку. Не уверен,...

Оптимизировать запрос
В базе есть примерно 25000 записей-товаров. У каждого есть запись - номер...

Оптимизировать запрос
Добрый день! Такая задача: в произвольной таблице (пусть будет dr_main)...

1
_ViPeR_
559 / 452 / 155
Регистрация: 02.03.2010
Сообщений: 1,095
11.02.2015, 07:49 #2
Первое, что бросается в глаза - это блок JOIN'ов ON, в котором есть текстовые поля. Как вариант - попробовать сделать индексы по этим полям
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2015, 07:49

Оптимизировать запрос
Есть 3 таблицы table1 (id, name) table2_1 (table1_id, table3_1_id)...

Как оптимизировать запрос
Добрый день! Есть таблица tasks у нее связь к log (один-ко-многим) и также у...

Можно ли оптимизировать запрос с LIKE
Вот есть такой запрос: SELECT * FROM table WHERE Address NOT LIKE...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru