|  | 
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ Подскажите плз: есть задача поиска страны по IP адресу, используя справочник такого вида: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Так же пробовал создавать covering index (IpFrom,IpTo,Country). Так же пробовал дополнительно создавать отдельные индексы для IpFrom и IpTo Ну и для поиска используется простой запрос запрос вида: Код: plsql 1. Проблема в том, что удается делать максимум 6000 поисков в секунду (Windows 10, Core i7), что крайне мало ( EXPLAIN QUERY PLAN выдает: SEARCH TABLE GeoIP USING INDEX IpRangeEndIdx (IpTo>?) Т.е. почему-то используется только один индекс только для второго значения. При этом тестовый запрос вида Код: plsql 1. выполняется раз в 10-15 быстрее. Наверняка можно как-то сделать быстрее! Но пока после 3 часов экспериментов не получается... Помогите плз ! Уж вы то точно знаете как надо ! ))) ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2018, 13:12 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ Если это диапазоны IP адресов, то должно быть 1. Всегда IpFrom <= IpTo 2. Диапазоны не пересекаются Если так, то конкретный IP адрес можно проверить так Код: sql 1. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2018, 13:33 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ Еще так попробуй Код: sql 1. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2018, 13:38 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ авторЕсли это диапазоны IP адресов Да, именно диапазоны. Содержимое таблицы примерно такое: IpFrom, IpTo, Country 16777216,16777471,Australia 16777472,16778239,China 16778240,16779263,Australia 16779264,16781311,China 16781312,16785407,Japan .... К сожалению, LIMIT 1 и OrderBy IpTo не помогли - скорость никак не изменилась. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2018, 15:00 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ Попробуй такой вариант Код: sql 1. После дополнительно проверить IpFrom<=? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 14.08.2018, 15:07 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ amsdevНу и для поиска используется простой запрос запрос вида: Код: plsql 1. попробуй Код: sql 1. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.08.2018, 04:38 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ Уберите эти экзисты и нот экзисты. Вы же знаете где экзист, а где нот экзист. Может и поможет. Да, бегин и енд транзакций тоже помогает раз в десять. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.08.2018, 17:51 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ Возможно, поможет -  9308178 ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.08.2018, 22:51 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ авторВозможно, поможет - 9308178 Большое спасибо, помогло ! Если переписать запрос вот так: SELECT Country FROM (SELECT Country, IpTo FROM GeoIP WHERE ?>=IpFrom ORDER BY IpFrom DESC LIMIT 1) sub WHERE ?<=sub.IpTo То получается в 36 (в тридцать шесть) раз быстрее !!! Огромное спасибо за помощь ! Сам бы ни в жизнь не допер что с подзапросом будет быстрее ! ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.08.2018, 14:34 |  | ||
| 
Простой запрос (поиск страны по IP) сильно тормозит | |||
|---|---|---|---|
| #18+ amsdev, я почти тоже самое предлагал  21641978 , только допроверка в коде. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.08.2018, 14:36 |  | ||
|  | 

| start [/forum/topic.php?desktop=1&fid=54&tid=2008436]: | 0ms | 
| get settings: | 10ms | 
| get forum list: | 14ms | 
| check forum access: | 4ms | 
| check topic access: | 4ms | 
| track hit: | 40ms | 
| get topic data: | 11ms | 
| get forum data: | 3ms | 
| get page messages: | 44ms | 
| get tp. blocked users: | 1ms | 
| others: | 13ms | 
| total: | 144ms | 

| 0 / 0 | 
