К основному контенту

Сообщения

Показаны сообщения с ярлыком "database"

Киянкой по голове – лекарство от болезни роста

Окончание о болезнях роста баз данных . Как и предсказывали друзья , переход на InnoDB и шаманство с типами связующих полей двух больших таблиц в MySQL не дали сколько-нибудь приемлемого результата. После размышлений о непредсказуемом результате, смысле жизни, затратах на смену СУБД, от перевода всего на PostgreSQL решил отказаться. Против лома нет приема и построчный перебор результатов запроса решил сделать обычными методами PHP, в обход Cake. Тоже, скажем прямо, не Cake way :-) Первым делом поискал гугловской группе сообщения на аналогичную тему. Таки да, есть люди со схожими запросами . Более того, во глубине сибирских руд классов CakePHP есть метод fetchRow, но он неинтересен совершенно. При выполнении запроса Cake хранит ссылку на результат последнего запроса у себя в свойстве и перебирать построчно результаты можно, только если при этом не выполнять никаких других запросов. В противном случае результат запроса, естественно, будет перезаписан. Поэтому задача перебора строк...

Болезни роста

Две таблицы в БД. Обе примерно по полмиллиона записей, а в рабочем виде будет и больше, миллиона 2-3. Таблицы не сами по себе, а связанные Один-ко-многим. При LEFT JOIN все это безбожно тормозит, невзирая на тип ключей, по которым идет связка, пробовал и INT вместо VARCHAR, который там изначально. Думаю над тремя вариантами. Обработку связей унести в код модели/контроллера Cake. т.е. SELECTить все по одельности. Попробовать InnoDB вместо MyISAM Перенести на PostgreSQL Пока обдумываю варианты, как буриданов осел, работа не движется. Буду пробовать на выходных сначала пункт 2, как наиболее простой в реализации, потом 3, потом 1-й как самый, на мой взгляд, идеологически неверный :-)