MySQL уже кэширует данные в виде InnoDB Buffer Pool .Когда запрашиваются страницы данных и индексов, они копируются в ОЗУ и используются для любых последующих запросов.
Вам следует определить индекс для столбца, по которому вы ведете поиск, если у вас еще нет индекса илипервичный ключ, определенный для этого столбца:
ALTER TABLE iplist ADD INDEX (ipfrom);
Тогда для поиска определенного значения в этом столбце не потребуется сканирование таблицы, это сузит поиск эффективно.
Примечаниекогда вы используете LIMIT, вы должны также использовать ORDER BY, иначе полученная строка будет первой прочитанной в порядке индекса, что может не всегда соответствовать желаемому.Если вы используете ORDER BY с избыточностью (то есть в том же порядке, в котором он читает индекс), он будет оптимизирован.
SELECT * FROM iplist where ipfrom <= INET_ATON(?) ORDER BY ipfrom LIMIT 1;