powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / мистика не использует индексы
25 сообщений из 27, страница 1 из 2
мистика не использует индексы
    #38318065
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация такая есть база на винде на денвере и на хостинге.
версии на винде:
Код: powershell
1.
2.
3.
4.
5.
6.
mysql> select version();
+------------------+
| version()        |
+------------------+
| 5.1.40-community |
+------------------+



На хостинге:
Код: powershell
1.
2.
3.
4.
5.
6.
mysql> select version();
+----------------+
| version()      |
+----------------+
| 5.1.68-cll-lve |
+----------------+



имею таблицы:

Код: 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.
 
create table lookup
(
ID int(11)  NOT NULL AUTO_INCREMENT ,
brand_name text,
art text,
art_disp text,
art_id	int(11),
art_bra_md5 binary(16) NOT NULL,

KEY in_art_id (art_id),
KEY in_s_md5 (ART_BRA_MD5),
PRIMARY KEY (ID)
);
  
  
CREATE INDEX ind_art ON lookup (art(8));

  create table pre_add_lookup
  (
  n int(11),
  bra text,
  disp text
  );



таблицы на обоих базах идентичны, индексы на lookup идентичны на обоих базах.

делаю запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select 
p.n,
p.bra,
p.disp,
(select l.brand_name   from lookup l  where 
l.art= REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(p.disp," ",""),"-",""),".",""),"/",""),"#","") 
group by l.brand_name
) as new_bra
from pre_add_lookup p 
where p.bra = "N/A"
and 
(select count(DISTINCT l.brand_name)   from lookup l   where 
l.art = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(p.disp," ",""),"-",""),".",""),"/",""),"#","") 
) = 1



на денвере все ок, на хостинге индексы использовать отказывается...
использование use/force index не помогает...

вот такая ботва на денвере
Код: powershell
1.
2.
3.
4.
5.
6.
7.
+----+--------------------+-------+------+---------------+---------+---------+------+-------+----------------------------------------------+
| id | select_type        | table | type | possible_keys | key     | key_len | ref  | rows  | Extra                                        |
+----+--------------------+-------+------+---------------+---------+---------+------+-------+----------------------------------------------+
|  1 | PRIMARY            | p     | ALL  | NULL          | NULL    | NULL    | NULL | 19890 | Using where                                  |
|  3 | DEPENDENT SUBQUERY | l     | ref  | ind_art       | ind_art | 11      | func |     2 | Using where                                  |
|  2 | DEPENDENT SUBQUERY | l     | ref  | ind_art       | ind_art | 11      | func |     2 | Using where; Using temporary; Using filesort |
+----+--------------------+-------+------+---------------+---------+---------+------+-------+----------------------------------------------+  



а на хостинге

Код: powershell
1.
2.
3.
4.
5.
6.
7.
+----+--------------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------+
| id | select_type        | table | type | possible_keys | key  | key_len | ref  | rows   | Extra                                        |
+----+--------------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------+
|  1 | PRIMARY            | p     | ALL  | NULL          | NULL | NULL    | NULL |  19890 | Using where                                  |
|  3 | DEPENDENT SUBQUERY | l     | ALL  | NULL          | NULL | NULL    | NULL | 136879 | Using where                                  |
|  2 | DEPENDENT SUBQUERY | l     | ALL  | NULL          | NULL | NULL    | NULL | 136879 | Using where; Using temporary; Using filesort |
+----+--------------------+-------+------+---------------+------+---------+------+--------+----------------------------------------------+



что может быть...
соответственно на денвере считается мгновенно а на хостинге часами...
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318104
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это где же всё идентично, если possible_keys IS NULL, a?
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318111
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

я говорю таблицы и индексы идентичные..

на локалке
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mysql> desc lookup;
+-------------+------------+------+-----+---------+----------------+
| Field       | Type       | Null | Key | Default | Extra          |
+-------------+------------+------+-----+---------+----------------+
| ID          | int(11)    | NO   | PRI | NULL    | auto_increment |
| brand_name  | text       | YES  |     | NULL    |                |
| art         | text       | YES  | MUL | NULL    |                |
| art_disp    | text       | YES  |     | NULL    |                |
| art_id      | int(11)    | YES  | MUL | NULL    |                |
| art_bra_md5 | binary(16) | NO   | MUL | NULL    |                |
+-------------+------------+------+-----+---------+----------------+



на сервере
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mysql> desc lookup;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| ID          | int(11)     | NO   | PRI | NULL    | auto_increment |
| brand_name  | text        | YES  |     | NULL    |                |
| art         | text        | YES  | MUL | NULL    |                |
| art_disp    | varchar(50) | YES  |     | NULL    |                |
| art_id      | int(11)     | YES  | MUL | NULL    |                |
| art_bra_md5 | binary(16)  | NO   | MUL | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+



или что имеешь ввиду? в плане выполнения запроса видно что он во втором случае не использует индекс
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318150
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты не DESC показывай, а SHOW CREATE TABLE.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318162
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

идентичны они
вот локалка
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
| lookup | CREATE TABLE `lookup` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `brand_name` text,
  `art` text,
  `art_disp` text,
  `art_id` int(11) DEFAULT NULL,
  `art_bra_md5` binary(16) NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `in_art_id` (`art_id`),
  KEY `in_s_md5` (`art_bra_md5`),
  KEY `ind_art` (`art`(8))
) ENGINE=MyISAM AUTO_INCREMENT=144225 DEFAULT CHARSET=cp1251 |



а вот хостинг

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
| lookup | CREATE TABLE `lookup` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `brand_name` text,
  `art` text,
  `art_disp` text,
  `art_id` int(11) DEFAULT NULL,
  `art_bra_md5` binary(16) NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `in_art_id` (`art_id`),
  KEY `in_s_md5` (`art_bra_md5`),
  KEY `ind_art` (`art`(8))
) ENGINE=MyISAM AUTO_INCREMENT=136880 DEFAULT CHARSET=cp1251 |
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318559
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpy,

Попробуйте сделать ANALYZE TABLE для таблицы lookup.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318724
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

да делал.. даже оптимайз на всякий случай
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38318945
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как поведёт себя запрос, если в него воткнуть FORCE INDEX?
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319083
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpy,

....обычно такие мистики возникают когда случайно
подключаются к левой тренировочной базе...
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319313
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

яж писал форс и юз никакой реакции
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319316
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

никаких ошибок в этом плане.. я в консоле на денвере и в консоле через ссш на хостинге...
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319330
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpy,

создайте простенькую табличку на хостинг с индексом.
проверьте чтоб был виден в еклейне индекс работал.
Если нет -- обрашайтесь в хостинг, если тест работает --
пересоздайте таблицу...
если не поможет -- 2-3 бутылки пива, удар по столу,
обматерите хостинг, вечером чай на ночь -- утром заработает!
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319372
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использование Force Index не приводит к появлению индекса в explain (необязательно использующихся, но обязательно - доступных), а скрипт создания таблицы показывает его наличие - это основание для серьёзнейшей претензии к хостеру. Либо там кривой донельзя сервер, либо ещё какие шаловливые ручки поработали настолько круто, что работа сервера не соответствует документации на него.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319401
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpy,

а настройки кодировок точно одинаковые на обоих серверах и не менялись после создания таблиц?
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319618
Антон_118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может имеет смысл попробовать упростить жизнь MySQL оптимизатору и немного поправить запрос?

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT p.n, p.bra, p.disp, l.brand_name AS new_bra
  FROM pre_add_lookup p 
  JOIN lookup l ON (l.art = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(p.disp," ",""),"-",""),".",""),"/",""),"#",""))
 WHERE p.bra = "N/A"
 GROUP BY p.n, p.bra, p.disp, l.brand_name
HAVING COUNT(DISTINCT l.brand_name) = 1



Проверьте пожалуйста его план и корректность. Извините, не могу сам отладить - нет DDL таблицы pre_add_lookup и данных.

По опыту знаю, чем проще синтаксис запроса, тем меньше пространства для маневров оптимизатору.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319812
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон_118,

делал даже просто связку двух таблиц..
не видит индекс.. а денвер видит без проблем...

камень предкновения связка
этого поля

disp text из pre_add_lookup

и поля

art text,
KEY ind_art (art(8)

в таблице
lookup

тоесть индекс при
art = disp
не работает(но на денвере работает),
а если делаем
art = "text"
индекс включается..

пробовал переводить поля в varchar(50)
не работает все равно...
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319816
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

вах... в полном шоке...
но ваш совет "пересоздать таблицы"
помог !!!
создал идентичную таблицу... тем же скриптом...
слил в нее данные и!!! с ней все ок.. индекс вяжется....
все запросы работают...

что за... чем ему первая точно такая же не угодила
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319826
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpyjavajdbc,

вах... в полном шоке...
но ваш совет "пересоздать таблицы"
помог !!!
создал идентичную таблицу... тем же скриптом...
слил в нее данные и!!! с ней все ок.. индекс вяжется....
все запросы работают...

что за... чем ему первая точно такая же не угодила

:-) разное бывает. Главное чтоб
банка пива в холодильнике была на такие случаи.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38319835
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpy,

force index - как ни странно, всего лишь рекомендация оптимизатору (когда-то и сам думал по-другому). Он вполне может положить на неё болт. Проверено и не раз.

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

... а у вас эксплайн показал, что на хостинге ... тупо не было доступных индексов.

Как вариант объяснения - индексы были созданы (create table это кажет)... но по каким-то причинам ими нельзя было воспользоваться ... отключены/блокированы после создания таблички, так могло быть?!?

Пересоздание таблички - пересоздало и индексы к ней... вот и объяснение.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38320076
MegaSpy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

про форс индекс понятно и так. просто спрашивали я и ответил что не помогает.
да оно и так понятно было я план то для чего показывал, показать что невидит индексов в доступе.
что и было странно и мистикой так как индексы были.
и я же писал что индекс даже работал в некотором случае.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38320088
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpy,

вот ничего акромя "блокировка индекса" в голову не лезет (туплю сегодня)... то есть надо смотреть возможно ли такое на Исаме и когда происходит... возможно ваш случай. Просто, пересоздание - может "вылечить" на время... а потом всё повторится, поскольку это не лечение проблемы (разве что не сыпящийся винт у хостера), а так примочка. Проблему-то вы так и не нашли!
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38320221
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaSpyчто за... чем ему первая точно такая же не угодилаНа мой вопрос про кодировки вы так и не ответили.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38320307
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109
force index - как ни странно, всего лишь рекомендация оптимизатору (когда-то и сам думал по-другому). Он вполне может положить на неё болт. Проверено и не раз.

Что-то я не припоминаю таких ситуаций. Конечно, за исключением проблем подобных приведению типов, вычислений функций или полнотекстового поиска.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38320536
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

постройте сложный селект на нескольких джойнах и попробуйте туда прибить свой индекс, особенно на какой-нибудь внешний ключик (с которого выборка ровно 1 запись)... иннодебил, просто положит на ваш ключик и эксплайн это покажет. Поскольку у меня железо чахлое, приходится каждый запрос оптимизировать по ключам и очень плотно... сталкивался уже несколько раз. Не знаю, может исам так себя не ведёт, я с ним не работаю. Да и ваще, в ближайшее время будем переползать на Перкону с xtraDb... тестирование показало, что на наших задачах она ровно в 2.5 раза быстрее без переделок кода и настроек. Только вот реплику админ поднимет и проверит... и всё.
...
Рейтинг: 0 / 0
мистика не использует индексы
    #38320560
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109постройте сложный селект...
Нет воспроизводимого примера - нет проблемы.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / мистика не использует индексы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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