главный вопрос к какому общему знаменателю приводить?
отличие в стоимости на 1000 может быть не важным, а пример различие в типе однушка или двушка это уже очень существенно.
решено добавить еще одну таблицу связь foto_id-real_id в таблице с фото оставляем описание фотографий. если связь с объектом хранить через implode в строке объекта то не будет возможности находить объект которому принадлежит фото. если в лоб шардировать таблицу с фотографиями (когда в ней же лежит связь с объектом) не будет возможности искать фотографии связанные с объектом. точнее будет, но слишком дорого так как шардироваться будет по id фото никто не знает в каком именно будет фото нужного объекта.
Да верно. сейчас запрос выполняется быстро. Но в таблице всего sa_metro_house 36,596 связей и всего 42,957 объектов в sa_real
правильно ли что при таком запросе
из sa_metro_house 36,596 выбираются подходящие например нужны станции 4 и 6 остается 5000записей и все эти 5000 подставляются в запрос where in house_location_id_fk.
т.е. что будет когда их будет не 5000тыс а 500 000тыс. оптимальный ли это способ. страшно потом в спешке переделывать. или тут только нагрузочное тестирование поможет?
Информация об удаленности не нужна.
сейчас сделал вот так
$this->db->where($this->table_name.' .house_location_id_fk in ( select sa_metro_house.location_id_fk from sa_metro_house where sa_metro_house.metro_id_fk in ('.implode(',', $metro).') )', NULL, FALSE);
все данные фильтруются на безопастность ранее. поэтому просто Implode сделал.
результат
spb.stopagent.ru/search/rent/db/id/status/see/m/6_27
но интересует вопрос нагрузки, так как запрос нагруженный довольно.
вы верно подметили, сортировка до метро используется при выводе информации об объекте.
когда не в поиске то сначала выводится охотный ряд 200 метров затем Площадь революции 300 метров.
в поиске же это не имеет значения. все связанные станции находятся в пределах 1500метров. и важен сам факт наличия связи а расстояние уже втрорично и выводится подробно в описании. Этот запрос нужен только для поиска связей.
$n = 12345;
echo round($n, -1 * round(log10($n))+1);
//в PHP отрицательный параметр производит округление слева от запятой
оказалось что "любимость" числа это округление до первых двух цифр
например:
12.250руб это ближе к 12.000руб
1.330.500руб это ближе к 1.300.000руб
получается что расхождение около 10% что гуд.
на мелких числах так и остается
12руб = 12руб
еще раз спасибо за напоминание по LOG10