Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация запроса / 12 сообщений из 12, страница 1 из 1
26.10.2015, 14:32:44
    #39086892
RubikVCubike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Возможно ли сменить тип поиска в запросе с типа All на какой-нибудь побыстрее?
Вот скрин запроса

Я говорю про таблицу ph, в которой 19894 строк

Она индексированная.
Вот скрин таблицы
...
Рейтинг: 0 / 0
26.10.2015, 14:48:31
    #39086923
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
RubikVCubike,

Покажите текст запроса текстом в тэге SRC.
...
Рейтинг: 0 / 0
26.10.2015, 14:51:06
    #39086928
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
В первом приближении - на таблице ph нужно создать индекс (cid).
...
Рейтинг: 0 / 0
26.10.2015, 15:03:31
    #39086953
RubikVCubike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
EXPLAIN SELECT c.comment, c.date1, c.id, c.title, ph.value, ph.cid, 
                     b.summa1, b.summa2, b.summa3, b.summa4, (b.summa1 + b.summa2 - b.summa3 - b.summa4) AS balance, 
                     b.yy, b.mm, tp.title AS tariff, opva.address AS obj_addr, c.status 
                     FROM contract c, contract_parameter_type_phone ph, contract_balance b, 
                     tariff_plan tp, contract_tariff ct, object o, object_param_value_address opva 
                     WHERE c.title LIKE '101%' 
                     AND c.id = ph.cid AND c.id = b.cid AND c.fc = 0
                     AND o.cid = c.id AND opva.object_id = o.id AND tp.id = ct.tpid 
                     AND ct.cid = c.id ORDER BY title



Создал индекс таким способом
Код: sql
1.
CREATE INDEX index_cid ON contract_parameter_type_phone (cid);



Теперь результат этого запроса выглядит так
...
Рейтинг: 0 / 0
26.10.2015, 15:04:24
    #39086956
RubikVCubike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Если рассудить логически, теперь мне нужно создать индекс для id из таблицы contract?
...
Рейтинг: 0 / 0
26.10.2015, 15:18:34
    #39086976
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
RubikVCubikeЕсли рассудить логически, теперь мне нужно создать индекс для id из таблицы contract?Он там уже есть, если я правильно понимаю, что id - это первичный ключ.

А нужен индекс по полю title.

Но на всякий случай покажите DDL таблицы contract (опять же - текстом).
...
Рейтинг: 0 / 0
26.10.2015, 15:20:03
    #39086979
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
miksoftА нужен индекс по полю title.Этот тоже вроде есть.

А что за поле fc ?
...
Рейтинг: 0 / 0
26.10.2015, 15:22:04
    #39086983
RubikVCubike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
miksoft,

Да, для title Тоже есть. fc может быть 0 или 1. Если 0 - физическое лицо, 1 - юрик
...
Рейтинг: 0 / 0
26.10.2015, 15:23:21
    #39086986
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Попробуйте (fc,title). Если сам не станет использоваться, то попробуйте заставить хинтом.
...
Рейтинг: 0 / 0
26.10.2015, 15:23:34
    #39086987
RubikVCubike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Код: 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.
CREATE TABLE bgbilling.contract (
  id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  gr bigint(20) NOT NULL DEFAULT 0,
  title varchar(150) NOT NULL DEFAULT '',
  title_pattern_id int(11) NOT NULL DEFAULT 0,
  pswd varchar(32) NOT NULL DEFAULT '',
  date1 date DEFAULT NULL,
  date2 date DEFAULT NULL,
  mode tinyint(4) NOT NULL DEFAULT 0,
  closesumma decimal(10, 2) NOT NULL,
  pgid int(11) NOT NULL DEFAULT 0,
  pfid int(11) NOT NULL DEFAULT 0,
  fc tinyint(1) NOT NULL DEFAULT 0,
  comment varchar(100) NOT NULL DEFAULT '',
  del tinyint(1) NOT NULL DEFAULT 0,
  scid int(11) NOT NULL DEFAULT 0,
  sub_list text NOT NULL,
  sub_mode tinyint(4) NOT NULL DEFAULT 0,
  status tinyint(4) NOT NULL DEFAULT 0,
  status_date date DEFAULT NULL,
  last_tariff_change datetime DEFAULT NULL,
  crm_customer_id int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (id),
  INDEX crm_customer_id (crm_customer_id),
  INDEX crm_id (crm_customer_id),
  INDEX date1 (date1),
  INDEX del (del),
  INDEX scid (scid),
  INDEX title (title)
)
ENGINE = MYISAM
AUTO_INCREMENT = 23056
AVG_ROW_LENGTH = 71
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
...
Рейтинг: 0 / 0
27.10.2015, 09:18:37
    #39087594
RubikVCubike
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
miksoftПопробуйте (fc,title). Если сам не станет использоваться, то попробуйте заставить хинтом.

Не знаю, как это хинтом. Я просто убрал fc из запроса :) Результат не изменился
...
Рейтинг: 0 / 0
27.10.2015, 09:49:50
    #39087639
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
RubikVCubikeНе знаю, как это хинтом. Index Hints . Речь про USE INDEX/FORCE INDEX.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация запроса / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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