Массив с неуникальными кеями

Статус
В этой теме нельзя размещать новые ответы.
Товарищ только от БД ушел, а вы его обратно в нее агитируете. По поводу неуникального массива. А как вы тогда делали выборку из БД, и понимали какое значение кому пренадлежит?
 
Быстрее и без геморроя хранить значения в БД.
Можно и в 1 массиве хранить — но тогда в виде подмножества массивов с ключ=значение
Это дело потом сериализовать и записывать в файл.
Функция serialize для этого служит.
Выборка — десериализовать:
PHP:
$array=unserialize(file_get_contents($file));
Без гемора залить 10+гб в бд как то тяжко)

Товарищ только от БД ушел, а вы его обратно в нее агитируете. По поводу неуникального массива. А как вы тогда делали выборку из БД, и понимали какое значение кому пренадлежит?
+100500

В базу я загонял с уникальными индексами, что ставило изначально в тупик, из-за геометрического уменьшения скорости insert и select при росте бд, даже с присущими индексами и объединением запросов.

В общем пошел немного по другому пути, поменял местами в массиве значения, которые более уникальные.
А при поиске делал flip
Вроде как работает.
Обработка 300к строк - сверка с 50кк строк на совпадения и запись найденного в файл занимает всего чуть больше 10 минут.
Оперативы бы мне подбавить, а то пришлось резать файлы на 100+ частей, иначе out of memory когда массив в 10+гб в память падал.
Немного дублей выпадает, но это уже не так смертельно.
Так что Profit в принципе.
Всем спасибо ребят, буду дальше мучить)
 
Последнее редактирование модератором:
Товарищ только от БД ушел, а вы его обратно в нее агитируете. По поводу неуникального массива. А как вы тогда делали выборку из БД, и понимали какое значение кому пренадлежит?
а что там такая серьёзная проблема, которая больше чем колличество постов тут по массивам? но раз камрад решил (насколько я понял) задачу почти, то и такой путь имеет право на жизнь

особенно это понравилось
+100500
Оперативы бы мне подбавить, а то пришлось резать файлы на 100+ частей, иначе out of memory когда массив в 10+гб в память падал.
ТС верняк усидчивый QA бы был, респект :eek::D
 
+100500

В базу я загонял с уникальными индексами, что ставило изначально в тупик, из-за геометрического уменьшения скорости insert и select при росте бд, даже с присущими индексами и объединением запросов.
На будущее для работы с БД и огромными вставками рекомендую:
1) Перед вставкой удалять индексы
2) Использовать commit для вставки пакетом 1000 и более строк.
3) Для соблюдения уникальности делать
PHP:
INSERT INTO ... ON DUPLICATE KEY UPDATE
 
если бы было так как вы хотите, то нарушился бы смысл ассоциативного массива. Проблема решается при помощи многомерного массива.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху