Изучаю CI. Начал делать учебный проект, достал базу компаний и пробую.
В целом получилось сделать работающую систему. Но меня смущает, что почти все запросы строят на по полям с ключами, а varchar полями.
База не большая 2k записей, работает быстро. Но всё же как передать параметры ID не в URL
База автосалонов по РФ к примеру.
Как сделано - Пример:
Вид URL site.ru/russia/moskva
Находимся на странице города, тут отображены все автосалоны Москвы.
В модели запрос выглядит так.
...
$this->db->where('city_eng="'.$city.'"');
$query = $this->db->get('select_city_salon_preview')
...
$city - берётся из контроллера
$uri_segment_city = $this->uri->segment(2);
полный поиск по полям varchar.
т.е просто берётся из url (moskva) и полный скан по базе и вывод всех строк совпадений.
Прочитав книгу (Шварц Б., Зайцев П., Ткаченко В. и др. - MySQL. Оптимизация производительности (2-е издание))
ужаснулся. что я наделал. Хотя я выстроил индекс по городам. значения уникальны. Но всё же.
тоже самое, когда нахожусь на странице автосалона.
/russia/moskva/avtosalon-na-prospekte-123
в модели:
...
$this->db->where('name_eng="'.$firm.'"');
$query = $this->db->get('select_firm_info');
...
$firm - берём из контроллера
$uri_segment_firm = $this->uri->segment(3);
тоже полный поиск по полям varchar.
Можно ли при таком url, как-то использовать поиск по ключу в таблице?
постарался донести суть проблемы, если не понятно написал, скажите ещё попробую описать.