|
|
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
Добрый день! Прошу советов по изменению базы данных. Что есть на данный момент: Множество однотипных таблиц, название которых имеет вид ip_ IP-адрес_оборудования в каждой из которых есть следующие поля: Id - первичный ключ Наименование оборудования - Текстовое поле Регистрация неисправности - Поле datetime Устранение неисправности - Поле datetime Длительность - Поле time , высчитывается как разность между полями "Устранение неисправности" и "Регистрация неисправности" Одна таблица, которая называется "ips" в которой есть следующие поля: Id - первичный ключ Ip-адрес - Текстовое поле Внутри таблицы ips есть множество строк, в каждой из которых содержится ip-адрес, для которого уже создана таблица в БД. В остальных таблицах содержатся записи о неисправностях для определенного ip. Периодически требуется выгружать данные по следующим критериям: - Все записи для определенного ip-адреса (здесь проблем нет, просто находится соответствующая таблица в БД и выбираются все строки из нее) - Все записи для всех устройств за определенную дату, которая содержится в поле "Регистрация неисправности". И вот со вторым пунктом начали возникать проблемы. На данный момент, чтобы выбрать все строки за определенную дату функция проходит по всем таблицам в базе и выбирает строки, соответствующие требуемой дате. Когда количество таблиц было небольшим, то выборка происходила быстро. На данный момент количество таблиц примерно равно 7000. Буду рад советам о том, как можно перестроить БД для ускорения выборки по второму критерию. P.S.: В качестве СУБД используется mysql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2012, 15:28 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
БабайкаБуду рад советам о том, как можно перестроить БД для ускорения выборки по второму критерию. Слей все таблицы в одну, IP-адрес держи как целое число, а не строку, построй индекс по дате. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2012, 15:48 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
> ip_/IP-адрес_оборудования/ в каждой из которых есть следующие поля: > Id - /первичный ключ/ > Наименование оборудования - /Текстовое поле/ > Регистрация неисправности - /Поле datetime/ > Устранение неисправности - /Поле datetime/ > Длительность - /Поле time/, высчитывается как разность между полями "Устранение > неисправности" и "Регистрация неисправности" Что в таблице хранится ? Ясно, что надо сливать в одну таблицу всё, но не ясно, как. > > Одна таблица, которая называется "ips" в которой есть следующие поля: > Id - /первичный ключ/ > Ip-адрес - /Текстовое поле/ > > Внутри таблицы ips есть множество строк, в каждой из которых содержится > ip-адрес, для которого уже создана таблица в БД. Это неправильно. Очень сильно неправильно. Нельзя ссылаться на таблицу по имени. В БД вообще должно быть фиксированное число таблиц. В общем, сливай в одну таблицу всё. > Периодически требуется выгружать данные по следующим критериям: > - Все записи для определенного ip-адреса (здесь проблем нет, просто находится > соответствующая таблица в БД и выбираются все строки из нее) Это уже проблема. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 01:54 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
MasterZiv, перестань дать советы, если нифига не смыслишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 11:26 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
MasterZiv, В каждой таблице хранятся записи о повреждениях на конкретной железке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 11:28 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
БабайкаВ качестве СУБД используется mysql В mysql есть "наследование" таблиц? Если есть - отнаследовать все от одной и успокоиться на запросе к родителю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 11:44 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
> перестань дать советы, если нифига не смыслишь А если смыслю, можно ? Разрешаешь ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 20:40 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
> В каждой таблице хранятся записи о повреждениях на конкретной железке. Если струтктура одинаковая -- все таблицы мёржишь в одну. Структура та же, но в PK добавляешь идентификатор железки (старое название таблицы например). Данные сливаешь в одну таблицу. Старые таблицы удаляешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 20:42 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
> В mysql есть "наследование" таблиц? Нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 20:43 |
|
||
|
Советы по изменению структуры БД
|
|||
|---|---|---|---|
|
#18+
MasterZiv> В mysql есть "наследование" таблиц? Нет. Значит без вариантов "все таблицы мёржишь в одну". Остальное всё равно по факту - разного рода костыли, дл применения которых нужны веские основания, пока не озвученные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 22:39 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37971036&tid=1541538]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
4ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 512ms |

| 0 / 0 |
