У меня есть база данных MySQL с примерно 200 таблицами. 50 из них — небольшие таблицы поиска 'id-data' с 2 полями. Несколько из этих баз данных размещены на общем сервере. Мне сообщили, что мне нужно уменьшить общее количество таблиц в среде общего хостинга из-за проблем с производительностью, связанных со слишком большим количеством таблиц.
Мой вопрос: можно/нужно ли объединить 50 таблиц поиска по 2 поля в одну таблицу из 3 полей с полями 'id-field_name-data'? Даже если это можно сделать, мне придется много работать над пользовательским приложением PHP. Мой другой выбор — перенести БД на выделенный сервер с гораздо более высокой стоимостью хостинга.
Я не верю, что мои 200 таблиц БД действительно вызывают какие-либо проблемы с производительностью на этом сервере общего хостинга, по крайней мере, с точки зрения пользовательского приложения. В одном запросе никогда не объединяются более 10 таких таблиц; хотя я видел несколько очень медленных запросов, сгенерированных phpmyadmin на этих БД.
решение1
Вы можете использовать подход «id-field-data» при соблюдении следующих условий:
1- Ваши таблицы не содержат слишком много записей. Поэтому итоговая таблица НЕ будет слишком большой.
2- Создание индекса по field
полю для ускорения поиска.
3. Изменить PHP-код несложно, и вы можете сделать это управляемым способом, не нарушая его работу.
4- Создайте еще одну копию вашего кода/таблиц, после чего вы сможете удалить ненужные таблицы/код.