Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите новичку оптимизировать запрос / 17 сообщений из 17, страница 1 из 1
03.05.2016, 16:27
    #39228654
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
Запрос
SELECT ads_ver, count(distinct dev_id) c FROM gcm GROUP BY ads_ver

Структура таблицы:
id int 11 0 0 -1 0 0 0 0 -1 0
dev_id varchar 50 0 -1 0 0 0 0 0 utf8 utf8_general_ci 0 0
ads_ver varchar 10 0 -1 0 0 0 0 0 utf8 utf8_general_ci 0 0

индексы на dev_id и ads_ver
записей 1.5кк

выполняется около минуты.
...
Рейтинг: 0 / 0
03.05.2016, 16:33
    #39228656
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMaster,

Покажите DDL таблицы полностью.
...
Рейтинг: 0 / 0
03.05.2016, 16:38
    #39228657
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
Я не уверен, что понимаю точно вопрос. Это оно?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE `gcm` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rid` blob,
  `ip` varchar(50) DEFAULT NULL,
  `cntry` varchar(255) DEFAULT NULL,
  `tz` int(255) DEFAULT NULL,
  `reg_tim` datetime DEFAULT NULL,
  `loc` varchar(20) DEFAULT NULL,
  `dev_id` varchar(50) DEFAULT NULL,
  `game` varchar(255) DEFAULT NULL,
  `additional` varchar(255) DEFAULT NULL,
  `updated_cnt` int(11) unsigned zerofill NOT NULL DEFAULT '00000000000',
  `ads_ver` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `i5` (`dev_id`,`game`) USING BTREE,
  KEY `i1` (`tz`) USING BTREE,
  KEY `i2` (`cntry`) USING BTREE,
  KEY `i3` (`loc`) USING BTREE,
  KEY `i4` (`game`) USING BTREE,
  KEY `i6` (`ads_ver`) USING BTREE,
  KEY `i7` (`dev_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1685856 DEFAULT CHARSET=utf8;
...
Рейтинг: 0 / 0
03.05.2016, 16:40
    #39228661
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
miksoftBooksMaster,

Покажите DDL таблицы полностью. Что именно нужно?
...
Рейтинг: 0 / 0
03.05.2016, 16:46
    #39228663
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMasterЭто оно?Оно.

Попробуйте создать индекс (ads_ver, dev_id) и сделайте после этого ANALYZE TABLE этой таблице (или даже OPTIMIZE TABLE, если таблица много модифицировалась после своего создания или последней оптимизации).

И типы данных вызывают сомнения. Почему dev_id (это же идентификатор некоего устройства?) имеет тип varchar(50) ?
...
Рейтинг: 0 / 0
03.05.2016, 16:55
    #39228669
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
miksoft
И типы данных вызывают сомнения. Почему dev_id (это же идентификатор некоего устройства?) имеет тип varchar(50) ?

dev_id - буквенно цифровой идентификатор устройства(андроид)

аналайз написал - статус ОК
оптимайз еще крутится...
таблица постоянно модифицируется. несколько десятков раз в секунду.
индекс создается, жду....
...
Рейтинг: 0 / 0
03.05.2016, 16:56
    #39228671
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
оптимайз отключил, я так понимаю оно долго будет, таблицу желательно на долго не занимать...
Изменения таблицы в 99.99% это добавление записи
...
Рейтинг: 0 / 0
03.05.2016, 17:05
    #39228673
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMasterdev_id - буквенно цифровой идентификатор устройства(андроид)Сколько различных значений содержится в этом поле?
Посчитать можно таким запросом:
Код: sql
1.
SELECT COUNT(DISTINCT dev_id) c FROM gcm

Что-то мне подсказывает, что сильно меньше полутора миллионов.
...
Рейтинг: 0 / 0
03.05.2016, 22:30
    #39228739
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
примерно 94% уникальных кодов... остальные - это те, у кого установлено больше одной нашей игры.
...
Рейтинг: 0 / 0
03.05.2016, 22:36
    #39228741
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
miksoftЧто-то мне подсказывает, что сильно меньше полутора миллионов.
Убрал дистинкт, на скорость не повлияло или повлияло несущественно.
...
Рейтинг: 0 / 0
03.05.2016, 23:41
    #39228746
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMasterпримерно 94% уникальных кодов.Ну значит я не угадал.
Так что там насчет индекса? Он создался?
...
Рейтинг: 0 / 0
03.05.2016, 23:52
    #39228750
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
Индекс не помог, не используется (( если делать коунт * то ОЧЕНЬ быстро получается.
...
Рейтинг: 0 / 0
04.05.2016, 00:01
    #39228753
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMasterИндекс не помог, не используетсяПоказывайте план запроса.
...
Рейтинг: 0 / 0
04.05.2016, 10:39
    #39228890
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMaster
Код: sql
1.
2.
3.
4.
CREATE TABLE `gcm` (
  ...
  `dev_id` varchar(50) DEFAULT NULL,
  ...


Все поля varchar длиной больше 20 будут тормозить в подобном запросе. В вашем случае если "dev_id - буквенно цифровой идентификатор устройства(андроид)", то я б сделал отдельную таблицу dev (id int, dev_num varchar(50)). Соответственно в вашей таблице `dev_id` varchar(50) заменится на `dev_id` int.
Аналогично можно поступить и в других случаях.

Пробуйте и должно попустить.
...
Рейтинг: 0 / 0
04.05.2016, 12:07
    #39228990
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
Злой БобрВсе поля varchar длиной больше 20 будут тормозить в подобном запросеОткуда такие, мягко говоря, странные сведения?
...
Рейтинг: 0 / 0
04.05.2016, 12:18
    #39229004
BooksMaster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
miksoftПоказывайте план запроса.
Это как?
...
Рейтинг: 0 / 0
04.05.2016, 12:20
    #39229007
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку оптимизировать запрос
BooksMastermiksoftПоказывайте план запроса.
Это как?Это перед запросом добавить слово EXPLAIN, выполнить и показать вывод тут в читабельном виде.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите новичку оптимизировать запрос / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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