powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / оптимизация between : where 'const' between f1 and f2
5 сообщений из 30, страница 2 из 2
оптимизация between : where 'const' between f1 and f2
    #38716312
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

я бы предложил заранее таблицы geo_locations и geo_ipranges сджойнить в одну.


alex564657498765453
Код: sql
1.
#select last 10 logs

а этого вообще не понял.
...
Рейтинг: 0 / 0
оптимизация between : where 'const' between f1 and f2
    #38716361
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftalex564657498765453,

я бы предложил заранее таблицы geo_locations и geo_ipranges сджойнить в одну.


alex564657498765453
Код: sql
1.
#select last 10 logs

а этого вообще не понял.

:) Коментарий к строчке кода
from ap_files a order by a.idap_file desc limit 10

берём последние 10 записей логов, для которых хотим найти по айпи откуда человек
...
Рейтинг: 0 / 0
оптимизация between : where 'const' between f1 and f2
    #38718809
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем может кому полезно будет.

Остановился на варианте
geo_ipranges (id - autoincrement,start - start ip,end - end ip,fk_idlocation - fk to geo_locations table)
Код: sql
1.
2.
3.
4.
5.
select fk_idlocation
from geo_ipranges
where `end`>=:current_ip and :current_ip>= `start`
order by `end`
limit 1;



я использовал подобный запрос в процедуре, которая обходит курсор(выборка из таблицы логов) где есть айпи клиента, и вот надо дорисовать (обновить) соседнее поле где изначально 0 ссылкой на локацию этого айпишника.

50000 строк обработало - найти по айпишнику локацию и обновить за секунд 10

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

всем спасибо.
...
Рейтинг: 0 / 0
оптимизация between : where 'const' between f1 and f2
    #38721434
iova1984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT t1.region_id, t2.end - t2.start as a1 FROM ".REGIONS_TABLE." AS t1, ".IPS_TABLE." AS t2 WHERE t2.start < ".ip2long_edit($ip)." AN D t2.end > ".ip2long_edit($ip). " AND t2.region_id=t1.region_id ORDER BY a1 LIMIT 1

ну это у меня так. Тут внимание на ф-ю ip2long, получающую в параметре нормальный IP:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
function ip2long_edit($ip) {
         $a = split('\.', $ip);
         if(count($a) != 4) return;
         $l = 0;
         for($i = 0; $i < count($a); $i++) {
             $l = $l * 256 + (int)$a[$i];
         }
         return $l;
}
...
Рейтинг: 0 / 0
оптимизация between : where 'const' between f1 and f2
    #38721576
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iova1984SELECT t1.region_id, t2.end - t2.start as a1 FROM ".REGIONS_TABLE." AS t1, ".IPS_TABLE." AS t2 WHERE t2.start < ".ip2long_edit($ip)." AN D t2.end > ".ip2long_edit($ip). " AND t2.region_id=t1.region_id ORDER BY a1 LIMIT 1

ну это у меня так. Тут внимание на ф-ю ip2long, получающую в параметре нормальный IP:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
function ip2long_edit($ip) {
         $a = split('\.', $ip);
         if(count($a) != 4) return;
         $l = 0;
         for($i = 0; $i < count($a); $i++) {
             $l = $l * 256 + (int)$a[$i];
         }
         return $l;
}



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

IP_STRING -> IP_INT

php - ip2long
mysql INET_ITON

reverse
php - long2ip
mysql INET_NTOI
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / оптимизация between : where 'const' between f1 and f2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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