Dmitry AST.
Новичок
Огромная база, сильно тормозит - нужна помощь.
Добрый день.
Есть база данных, она состоит из примерно 100 таблиц, всего из 3х полей – ID, num, price – num – строковое поле из 20 символов. В каждой из этих 100 таблиц примерно 100.000 записей. Т.е. в сумме записей около 10 миллионов.
Есть еще одна таблица на 3 миллиона записей, она тоже из 3х полей: ID, num1, num2 где num1,2 – это два номера (соответственно по 20 символов). В этой таблице идут дубликаты. Т.е. у одного номера может быть от 0 до 10 дубликатов.
На сайте необходимо делать поиск по номерам. Все это дело у нас жутко тормозит… Хотя заказан выделенный сервак. Один номер вместе с дубикатами ищется около 1 минуты, что для клиентов неприемлемо. Хотя все эти данные взяты с CD размером 700Мб и если программа просто работает на компе под Виндой (база в программе используется ACCESS) то номер ищется всего за несколько секунд, и все это дело на обычном ноутбуке, производительность которого раз в 10 ниже чем заказанный у нас сервак…
На сервере программная часть на РНР и МуСкуле. Алгоритм такой, сперва делается запрос к табле дубликатов. Затем по результатам прописан цикл, и каждый найденный дубликат ищется во всех 100 таблицах. Индексы и подобное в БД не используются
Прошу спецов указать как можно оптимизировать БД (индексы и т.п.) и алгоритм (может имеет смысл написать один длинный SQL-запрос ко всем 101 таблицам)…
Заранее спасибо за помощь!
Добрый день.
Есть база данных, она состоит из примерно 100 таблиц, всего из 3х полей – ID, num, price – num – строковое поле из 20 символов. В каждой из этих 100 таблиц примерно 100.000 записей. Т.е. в сумме записей около 10 миллионов.
Есть еще одна таблица на 3 миллиона записей, она тоже из 3х полей: ID, num1, num2 где num1,2 – это два номера (соответственно по 20 символов). В этой таблице идут дубликаты. Т.е. у одного номера может быть от 0 до 10 дубликатов.
На сайте необходимо делать поиск по номерам. Все это дело у нас жутко тормозит… Хотя заказан выделенный сервак. Один номер вместе с дубикатами ищется около 1 минуты, что для клиентов неприемлемо. Хотя все эти данные взяты с CD размером 700Мб и если программа просто работает на компе под Виндой (база в программе используется ACCESS) то номер ищется всего за несколько секунд, и все это дело на обычном ноутбуке, производительность которого раз в 10 ниже чем заказанный у нас сервак…
На сервере программная часть на РНР и МуСкуле. Алгоритм такой, сперва делается запрос к табле дубликатов. Затем по результатам прописан цикл, и каждый найденный дубликат ищется во всех 100 таблицах. Индексы и подобное в БД не используются
Прошу спецов указать как можно оптимизировать БД (индексы и т.п.) и алгоритм (может имеет смысл написать один длинный SQL-запрос ко всем 101 таблицам)…
Заранее спасибо за помощь!