Оптимальный поиск по файлу и замена определенных строк

Статус
В этой теме нельзя размещать новые ответы.

clevel

Новичок
Оптимальный поиск по файлу и замена определенных строк

У меня есть CSV файл такого содердания:

num1\tnum2\tnum3\n <-пример строки

1.Какие есть алгоритмы/функции/приемы поиска по num2 БЕЗ считывания всех данных(других столбцов, в данном случае первого и третьего)? Имеется в виду считывание только второго столбца, чтобы потом по нему можно было искать.
2.Нашел я искомые строки, например 5 и 12. Как мне заменить их содержание другим контентом? Варианты типа- считай весь фал в массив, замени в массиве все что надо, а потом перезапиши файл данными из этого массива- не предлагать.
 

RomikChef

Guest
1. хранить не в csv, а в базе данных.
2. никак.
 

RomikChef

Guest
Какая прелесть!!!!
Это песня!
Это 5!
Это 25!
Дай тебя поцелую!
а я уж думал, что сегодня ни одного топика в юмор не уйдет! :)))))))))
 

RomikChef

Guest
операции с базой занимают десятые-сотые доли секунды.
 

clevel

Новичок
2.вроде fseek+fopen(a+) помогут, только вот как бороться с разными джлинами конечных и начальных данных?
 

clevel

Новичок
операции с базой занимают десятые-сотые доли секунды
пример из жизни: в таблице 2000 записей.... прсотая выборка с применением group by и посдетом count для каждой
группы занимает 6 секунд... через файлы - 0.02 секунды... что предпочесть? Да, при этом на таблице самые оптимальные индексы выставлены
 

Crazy

Developer
Опа... Ты group by и count тоже через файлы делал? Да ты крут...
 

RomikChef

Guest
клевел.
у тебя была какая-нибудь глючная бета под виндой.
других объяснений нет.
 

RomikChef

Guest
Сумасшедший дом!
Из-за того, что я не умею ездить на машине, быстрее будет на самокате.
Тушите свет.
 

RomikChef

Guest
Может, у тебя база была не на своем компе, а в инете?
 

clevel

Новичок
ладно.. пусть каждый останется при своем... я решил так сделать...
помогите лучше решить вопрос с разностью длин начальных данных и конечных:
1.если конечная строка длиннее начальной, как недопустить затирание части данных?
2.если начальная строка длиннее, как убрать ненужный "хвост"?
 

Макс

Старожил PHPClub
прсотая выборка с применением group by и посдетом count для каждой
ты бы лучше разобрался с БД, почему она так тормозила. А с файлами куча левых проблем возникает
 

.des.

Поставил пиво кому надо ;-)
@clevel
неужели ты не понимаешь, что никак?
Ну как ты заставишь подвинуться хвост чтобы вместить новую запись не перезаписав ее!
Ну не бейся ты головой об стенку просто попробуй разобраться в чем причина тормозов Мускла.. 6 секунд это нереально если ты оптимизировал запрос. (просто глючная версия какая то.. или еще что-то)
Решай эту проблему, а не извращайся
 

RomikChef

Guest
1. НИКАК! NO WAY! На каком тебе еще языке сказать? По-собачьи прогавкать? УЧИ МАТЧАСТЬ!
2. пробелов добавить.
3. Выпрямить руки и сделать, как все люди, у которых с головой в порядке, делают - в базе.
 

clevel

Новичок
хорошо, объясните мне тогда, где проблема в мускуле:
таблица statistic (пишу статистику):
owner(int(10) unsigned),
user(int(10) unsigned),
page(int(10) unsigned),
hit(int(10) unsigned),
exec (int(10) unsigned)
index owner,user,page,hit
запрос:
SELECT FROM_UNIXTIME(statistic.hit,'%Y%m'),COUNT(DISTINCT(copy.user))
FROM statistic,statistic copy
WHERE statistic.owner=2
AND copy.owner=statistic.owner
AND FROM_UNIXTIME(copy.hit,'%Y%m')<FROM_UNIXTIME(statistic.hit,'%Y%m')
AND statistic.user=copy.user
GROUP BY 1
ORDER BY statistic.hit
с индексом выполняется 6 секунд, без оного - 15 секунд... именно этот запрос тормозит...

это самый простой запрос, сложные вообще не хотят отображаться, превышен лимит в 30 секунд..
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху