|
|
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
Суть такая 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 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 16:49:29 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
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 перелопатил. так что всё норм - полёт нормальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 20:29:13 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 20:33:10 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
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 перелопатил. так что всё норм - полёт нормальный. Как на него индекс поставить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 21:52:30 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
shushikaalex564657498765453пропущено... и что вас удевляет... вы преобразовали тип поля name - это уже не поле нейм на котором индекс, а новое - вычесленное значение...естественно индекс не будет использоваться. ну вот лягла так какрта, но нужная запись найдене аж 173712-ой. ну ведь не все 180000 перелопатил. так что всё норм - полёт нормальный. Как на него индекс поставить ? никак. запрос надо переделать чтобы небыло вычисляемых полей, чтоб было просто нейм равно выражению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 22:23:09 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
alex564657498765453shushikaпропущено... Как на него индекс поставить ? никак. запрос надо переделать чтобы не было вычисляемых полей, чтоб было просто нейм равно выражению SELECT * FROM table WHERE name = 'user' LIMIT 1; Так ? Если так делать, то не учитывает регистр, а регистр принципиален ! Что если в name добавить атрибут BINARY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 22:39:39 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
shushikaalex564657498765453пропущено... никак. запрос надо переделать чтобы не было вычисляемых полей, чтоб было просто нейм равно выражению SELECT * FROM table WHERE name = 'user' LIMIT 1; Так ? Если так делать, то не учитывает регистр, а регистр принципиален ! Что если в name добавить атрибут BINARY поменяй кодировку и коллейт у данного поля на учитывающий регистр символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 22:45:03 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
MasterZivshushikaпропущено... SELECT * FROM table WHERE name = 'user' LIMIT 1; Так ? Если так делать, то не учитывает регистр, а регистр принципиален ! Что если в name добавить атрибут BINARY поменяй кодировку и коллейт у данного поля на учитывающий регистр символов. VARBINARY или просто атрибут BINARY добавить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2015, 23:18:16 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
кодировку и коллейт , Карл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 07:42:42 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
tanglir кодировку и коллейт , Карл! заменить коллейт на cp1251_bin и запрос типа select * from table where name = 'user' ? проверил вроде выдает нужное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 08:52:02 |
|
||
|
Не использует индексы
|
|||
|---|---|---|---|
|
#18+
shushikatanglir кодировку и коллейт , Карл! заменить коллейт на cp1251_bin и запрос типа select * from table where name = 'user' ? проверил вроде выдает нужное только ведь не зря везде регистр неимеет значения. сомнения вызывает задача подобная... ЗЫ вообще можно в бинари хранить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 09:51:27 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1832897]: |
0ms |
get settings: |
4ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 288ms |

| 0 / 0 |
