powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Советы по изменению структуры БД
10 сообщений из 10, страница 1 из 1
Советы по изменению структуры БД
    #37970077
Бабайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Прошу советов по изменению базы данных.

Что есть на данный момент:
Множество однотипных таблиц, название которых имеет вид ip_ IP-адрес_оборудования в каждой из которых есть следующие поля:
Id - первичный ключ
Наименование оборудования - Текстовое поле
Регистрация неисправности - Поле datetime
Устранение неисправности - Поле datetime
Длительность - Поле time , высчитывается как разность между полями "Устранение неисправности" и "Регистрация неисправности"

Одна таблица, которая называется "ips" в которой есть следующие поля:
Id - первичный ключ
Ip-адрес - Текстовое поле

Внутри таблицы ips есть множество строк, в каждой из которых содержится ip-адрес, для которого уже создана таблица в БД.

В остальных таблицах содержатся записи о неисправностях для определенного ip.

Периодически требуется выгружать данные по следующим критериям:
- Все записи для определенного ip-адреса (здесь проблем нет, просто находится соответствующая таблица в БД и выбираются все строки из нее)
- Все записи для всех устройств за определенную дату, которая содержится в поле "Регистрация неисправности".

И вот со вторым пунктом начали возникать проблемы. На данный момент, чтобы выбрать все строки за определенную дату функция проходит по всем таблицам в базе и выбирает строки, соответствующие требуемой дате. Когда количество таблиц было небольшим, то выборка происходила быстро. На данный момент количество таблиц примерно равно 7000. Буду рад советам о том, как можно перестроить БД для ускорения выборки по второму критерию.

P.S.: В качестве СУБД используется mysql
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37970111
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БабайкаБуду рад советам о том, как можно перестроить БД для ускорения выборки по
второму критерию.
Слей все таблицы в одну, IP-адрес держи как целое число, а не строку, построй индекс по дате.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37970707
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> ip_/IP-адрес_оборудования/ в каждой из которых есть следующие поля:
> Id - /первичный ключ/
> Наименование оборудования - /Текстовое поле/
> Регистрация неисправности - /Поле datetime/
> Устранение неисправности - /Поле datetime/
> Длительность - /Поле time/, высчитывается как разность между полями "Устранение
> неисправности" и "Регистрация неисправности"

Что в таблице хранится ? Ясно, что надо сливать в одну таблицу всё, но не ясно,
как.

>
> Одна таблица, которая называется "ips" в которой есть следующие поля:
> Id - /первичный ключ/
> Ip-адрес - /Текстовое поле/
>
> Внутри таблицы ips есть множество строк, в каждой из которых содержится
> ip-адрес, для которого уже создана таблица в БД.

Это неправильно. Очень сильно неправильно. Нельзя ссылаться на таблицу по имени.
В БД вообще должно быть фиксированное число таблиц.

В общем, сливай в одну таблицу всё.

> Периодически требуется выгружать данные по следующим критериям:
> - Все записи для определенного ip-адреса (здесь проблем нет, просто находится
> соответствующая таблица в БД и выбираются все строки из нее)

Это уже проблема.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37971036
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

перестань дать советы, если нифига не смыслишь
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37971040
Бабайка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

В каждой таблице хранятся записи о повреждениях на конкретной железке.
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37971066
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БабайкаВ качестве СУБД используется mysql
В mysql есть "наследование" таблиц? Если есть - отнаследовать все от одной и успокоиться на запросе к родителю.
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37972006
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> перестань дать советы, если нифига не смыслишь

А если смыслю, можно ? Разрешаешь ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37972009
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> В каждой таблице хранятся записи о повреждениях на конкретной железке.

Если струтктура одинаковая -- все таблицы мёржишь в одну.
Структура та же, но в PK добавляешь идентификатор железки (старое название
таблицы например). Данные сливаешь в одну таблицу.
Старые таблицы удаляешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37972011
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> В mysql есть "наследование" таблиц?

Нет.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Советы по изменению структуры БД
    #37972116
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv> В mysql есть "наследование" таблиц?
Нет.

Значит без вариантов "все таблицы мёржишь в одну".
Остальное всё равно по факту - разного рода костыли, дл применения которых нужны веские основания, пока не озвученные.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Советы по изменению структуры БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]