Страница 1 из 1
sql question
Добавлено: 18 май 2007, 07:24
Gaziz
Hi,
I need help from smart db people
What query will help me to find longest call and all calls longer than certain time in a table like this
Table "calls":
Phone int,
Time timestamp,
Event varchar
Example of records:
4168885555 09:00:00 "starting call"
9053332211 09:15:32 "starting call"
[Skiping thousands of records]
4168885555 09:21:22 "end call"
9055332211 09:52:22 "end call"
Thanks,
Gaziz
Добавлено: 18 май 2007, 08:37
aleks97
я не профессионал, но похоже, что с выше описаной структурой базы данных такие действия крайне затруднительны, будут занимать очень много времени (если там тысячи записей)
Добавлено: 18 май 2007, 08:44
Yury
...
Добавлено: 18 май 2007, 08:46
Gaziz
aleks97 писал(а):я не профессионал, но похоже, что с выше описаной структурой базы данных такие действия крайне затруднительны, будут занимать очень много времени (если там тысячи записей)
спасибо.
да, там больше 60 миллионов записей.
Как посоветуешь изменить дезайн?
Добавлено: 18 май 2007, 08:57
aleks97
Gaziz писал(а):
спасибо.
да, там больше 60 миллионов записей.
Как посоветуешь изменить дезайн?
ну что-то вроде
transaction # | FROM ph # | TO ph # | start time | end time | duration | other, dummie fields
индексы построить по transaction # и номеру телефонов или вообще несколько индексов, смотря какие поиски по базе данных будут...
опять же я не рпофессионал

) так что осторожнее с моими советами

Добавлено: 18 май 2007, 08:57
aleks97
дубль

Добавлено: 18 май 2007, 09:25
Stanislav
Gaziz писал(а):aleks97 писал(а):я не профессионал, но похоже, что с выше описаной структурой базы данных такие действия крайне затруднительны, будут занимать очень много времени (если там тысячи записей)
спасибо.
да, там больше 60 миллионов записей.
Как посоветуешь изменить дезайн?
Прежде чем менять дизайн, надо знать, откуда у этой базы ноги растут. Каковы бизнес процессы?
Добавлено: 18 май 2007, 10:54
Gaziz
Stanislav писал(а):Gaziz писал(а):aleks97 писал(а):я не профессионал, но похоже, что с выше описаной структурой базы данных такие действия крайне затруднительны, будут занимать очень много времени (если там тысячи записей)
спасибо.
да, там больше 60 миллионов записей.
Как посоветуешь изменить дезайн?
Прежде чем менять дизайн, надо знать, откуда у этой базы ноги растут. Каковы бизнес процессы?
все просто - люди звонят и их действия пишутся в логи, откуда я и
загребаю в базу.
Добавлено: 18 май 2007, 11:05
Marmot
aleks97 писал(а):Gaziz писал(а):
спасибо.
да, там больше 60 миллионов записей.
Как посоветуешь изменить дезайн?
ну что-то вроде
transaction # | FROM ph # | TO ph # | start time | end time | duration | other, dummie fields
индексы построить по transaction # и номеру телефонов или вообще несколько индексов, смотря какие поиски по базе данных будут...
+1
Добавлено: 18 май 2007, 11:13
CdR
Как CDR (Call Detail Records)

скажу, что стоит повозится и запустить отдельный процесс, который будет собирать из исходного формата, в тот, что предложил
aleks97. Будет легче, хотя даже в этом случае ворочать этими миллионами записей удовольствие то еще.

Добавлено: 18 май 2007, 11:19
Marmot
CdR писал(а):ворочать этими миллионами записей удовольствие то еще.

При правильных идексах и хорошо настроенной базе все будет нормально.
У нас например есть таблицы с 500М записей в MySQL, все работает достаточно быстро, хотя на оптимизацию ушло некоторое время

Добавлено: 18 май 2007, 11:24
CdR
Marmot писал(а):У нас например есть таблицы с 500М записей в MySQL, все работает достаточно быстро, хотя на оптимизацию ушло некоторое время

Вопрос в том, что именно хочется в конечном итоге. Камней там немеряно....

Особенного когда хочется каждую неделю чего-то нового и странного. Но это, конечно, совсем другая история.
Re: sql question
Добавлено: 18 май 2007, 13:24
ura
Gaziz писал(а):Hi,
I need help from smart db people
What query will help me to find longest call and all calls longer than certain time in a table like this
Table "calls":
Phone int,
Time timestamp,
Event varchar
Example of records:
4168885555 09:00:00 "starting call"
9053332211 09:15:32 "starting call"
[Skiping thousands of records]
4168885555 09:21:22 "end call"
9055332211 09:52:22 "end call"
А где ID сессии или гарантируется что записи идут парами всегда и ничего не теряется? (верится с трудом).
Re: sql question
Добавлено: 18 май 2007, 14:04
CdR
ura писал(а):А где ID сессии или гарантируется что записи идут парами всегда и ничего не теряется? (верится с трудом).
хехе. С ID просто.
