Общие > Базы данных
Проблема медленного запроса в MySQL
(1/1)
UltraMax:
Использую на виртуальном хостинге базу данных
http://ip-to-country.webhosting.info
Она позволяет создать базу данных с ip, по которой можно по ip (из БД) выдернуть название страны.
Все работает - но на хостинге предпреждают, что заросы очень медленные (то есть тормозят сервер). Вот описание хостера
http://www.1gb.ru/default.aspx?ti=6&hti=111
База создавалась так:
--- Цитировать ---CREATE DATABASE databasename; USE databasename; CREATE TABLE `iptocountry` ( `IP_FROM` double NOT NULL default \'0\', `IP_TO` double NOT NULL default \'0\', `COUNTRY_CODE2` char(2) NOT NULL default \'\', `COUNTRY_CODE3` char(3) NOT NULL default \'\', `COUNTRY_NAME` varchar(50) NOT NULL default \'\', KEY `CODE` (`IP_FROM`,`IP_TO`,`COUNTRY_CODE2`) ) ENGINE=MyISAM;
--- Конец цитаты ---
всего там около 80000 записей, и select идет вот так
--- Код: ---
--- Конец кода ---
Скажите - можно ли что-то здесь с оптимизировать так, чтобы поиск меньше загружал сервер? Вроде бы и индексы созданы. Хостер пишет, что
--- Цитировать ---Обычно это означает либо отсутствие необходимого индекса по полю field, либо большое количество строк в качестве ответа на запрос.
--- Конец цитаты ---
Но у меня только одна строка возвращается... Что же не так?
commander:
1. тип данных под IP либо int либо спец тип...
2. =
html_coder:
А что если выполнить EXPLAIN на твой SELECT запрос и посмотреть использует ли MySQL тот индекс, который определен!
И если не использует, попробовать разобраться почему...
UltraMax:
Сделал вот такой запрос:
EXPLAIN SELECT country_code2,country_name FROM iptocountry WHERE IP_FROM=inet_aton(\'78.106.23.180\');
получил ответ:
--- Код: ---
table type possible_keys key key_len ref rows Extra
iptocountry range CODE CODE 8 NULL 12519 where used
--- Конец кода ---
Как я понял используется?
Навигация
Перейти к полной версии