Использую на виртуальном хостинге базу данных
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 идет вот так
//---------------------------------------------------
// Sample code to display Visitor Country information
// PHP 4
//---------------------------------------------------
// Establishing a database connection
$dbh=mysql_connect("localhost:3306","$MYSQL_USERNAME","$MYSQL_PASSWORD");
mysql_select_db("$MYSQL_DBNAME");
// Query for getting visitor countrycode
$country_query = "SELECT country_code2,country_name FROM iptoc ".
"WHERE IP_FROM<=inet_aton(\'$REMOTE_ADDR\') ".
"AND IP_TO>=inet_aton(\'$REMOTE_ADDR\') ";
// Executing above query
$country_exec = mysql_query($country_query);
// Fetching the record set into an array
$ccode_array=mysql_fetch_array($country_exec);
// getting the country code from the array
$country_code=$ccode_array[\'country_code2\'];
// getting the country name from the array
$country_name=$ccode_array[\'country_name\'];
// Display the Visitor coountry information
echo "$country_code - $country_name";
// Closing the database connection
mysql_close($dbh);
?>
Скажите - можно ли что-то здесь с оптимизировать так, чтобы поиск меньше загружал сервер? Вроде бы и индексы созданы. Хостер пишет, что
Обычно это означает либо отсутствие необходимого индекса по полю field, либо большое количество строк в качестве ответа на запрос.
Но у меня только одна строка возвращается... Что же не так?