powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не использует индексы
11 сообщений из 11, страница 1 из 1
Не использует индексы
    #39016998
shushika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть такая update и select делает перебор всей базы, хотя выборка по индексам стоит
лог выдает это
# Query_time: 0.220863 Lock_time: 0.000059 Rows_sent: 1 Rows_examined: 173712
SET timestamp=1437978323;
SELECT * FROM table WHERE BINARY name = 'user' LIMIT 1;

тип name varchar(25)

в базе примерно 180000 записей
...
Рейтинг: 0 / 0
Не использует индексы
    #39017125
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shushikaСуть такая update и select делает перебор всей базы, хотя выборка по индексам стоит
лог выдает это
# Query_time: 0.220863 Lock_time: 0.000059 Rows_sent: 1 Rows_examined: 173712
SET timestamp=1437978323;
SELECT * FROM table WHERE BINARY name = 'user' LIMIT 1;

тип name varchar(25)

в базе примерно 180000 записей

и что вас удевляет... вы преобразовали тип поля name - это уже не поле нейм на котором индекс, а новое - вычесленное значение...естественно индекс не будет использоваться.

ну вот лягла так какрта, но нужная запись найдене аж 173712-ой. ну ведь не все 180000 перелопатил. так что всё норм - полёт нормальный.
...
Рейтинг: 0 / 0
Не использует индексы
    #39017126
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
explain 

select * from geo_ips i
where BINARY i.idgeo_iprange = 44444;

explain 

select * from geo_ips i
where  i.idgeo_iprange = 44444;



id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra
1|SIMPLE|i|ALL|NULL|NULL|NULL|NULL|1986609|Using where


id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra
1|SIMPLE|i|const|PRIMARY|PRIMARY|8|const|1|

idgeo_iprange - это первичный ключ - BIGINT
...
Рейтинг: 0 / 0
Не использует индексы
    #39017160
shushika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453shushikaСуть такая update и select делает перебор всей базы, хотя выборка по индексам стоит
лог выдает это
# Query_time: 0.220863 Lock_time: 0.000059 Rows_sent: 1 Rows_examined: 173712
SET timestamp=1437978323;
SELECT * FROM table WHERE BINARY name = 'user' LIMIT 1;

тип name varchar(25)

в базе примерно 180000 записей

и что вас удевляет... вы преобразовали тип поля name - это уже не поле нейм на котором индекс, а новое - вычесленное значение...естественно индекс не будет использоваться.

ну вот лягла так какрта, но нужная запись найдене аж 173712-ой. ну ведь не все 180000 перелопатил. так что всё норм - полёт нормальный.

Как на него индекс поставить ?
...
Рейтинг: 0 / 0
Не использует индексы
    #39017170
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shushikaalex564657498765453пропущено...


и что вас удевляет... вы преобразовали тип поля name - это уже не поле нейм на котором индекс, а новое - вычесленное значение...естественно индекс не будет использоваться.

ну вот лягла так какрта, но нужная запись найдене аж 173712-ой. ну ведь не все 180000 перелопатил. так что всё норм - полёт нормальный.

Как на него индекс поставить ?

никак. запрос надо переделать чтобы небыло вычисляемых полей, чтоб было просто нейм равно выражению
...
Рейтинг: 0 / 0
Не использует индексы
    #39017178
shushika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453shushikaпропущено...


Как на него индекс поставить ?

никак. запрос надо переделать чтобы не было вычисляемых полей, чтоб было просто нейм равно выражению

SELECT * FROM table WHERE name = 'user' LIMIT 1;

Так ? Если так делать, то не учитывает регистр, а регистр принципиален ! Что если в name добавить атрибут BINARY
...
Рейтинг: 0 / 0
Не использует индексы
    #39017184
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shushikaalex564657498765453пропущено...


никак. запрос надо переделать чтобы не было вычисляемых полей, чтоб было просто нейм равно выражению

SELECT * FROM table WHERE name = 'user' LIMIT 1;

Так ? Если так делать, то не учитывает регистр, а регистр принципиален ! Что если в name добавить атрибут BINARY

поменяй кодировку и коллейт у данного поля на учитывающий регистр символов.
...
Рейтинг: 0 / 0
Не использует индексы
    #39017196
shushika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivshushikaпропущено...


SELECT * FROM table WHERE name = 'user' LIMIT 1;

Так ? Если так делать, то не учитывает регистр, а регистр принципиален ! Что если в name добавить атрибут BINARY

поменяй кодировку и коллейт у данного поля на учитывающий регистр символов.

VARBINARY или просто атрибут BINARY добавить ?
...
Рейтинг: 0 / 0
Не использует индексы
    #39017290
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не использует индексы
    #39017318
shushika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir кодировку и коллейт , Карл!

заменить коллейт на cp1251_bin и запрос типа select * from table where name = 'user' ?
проверил вроде выдает нужное
...
Рейтинг: 0 / 0
Не использует индексы
    #39017359
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shushikatanglir кодировку и коллейт , Карл!

заменить коллейт на cp1251_bin и запрос типа select * from table where name = 'user' ?
проверил вроде выдает нужное

только ведь не зря везде регистр неимеет значения. сомнения вызывает задача подобная...

ЗЫ
вообще можно в бинари хранить
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не использует индексы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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