Добрый день, впервые сталкиваюсь с базой данных на 3,5 млн записей.
До этого все время работал с MySQL и SQLite.
Прошу помощи в оптимизации скорости, потому как при простых вопросах все серьезно притормаживает.
Сейчас базе всего одна таблица:
ID (varchar 32)
4 enum поля
и около 40 полей типа TEXT (сейчас с длинами полей я определился и преобразовал их в VARCHAR)
Примерно так:
ID
var1 - enum
var2 - enum
var3 - enum
var4 - enum
vchar1 - varchar(200)
vchar2 - varchar(120)
vchar3 - varchar(200)
vchar4 - varchar(1200)
....
vchar40 - varchar(500)
Для визуализации данных я использую DataTables на Javascript-e, данные вытаскиваю из базы с помощью PDO.
Основные запросы такие:
1) Для отображения данных в таблице (жду около 15 секунд)
SELECT id, var2, var4, vchar4, vchar5, vchar34, vchar40
FROM tbl
WHERE
var1="a"
LIMIT 390, 10
ORDER BY var2 DESC
// В таблице отображаются не все поля из БД, а только четверть
2) Для поиска по таблице (работает совсем долго)
SELECT id, var2, var4, vchar4, vchar5, vchar34, vchar40
FROM tbl
WHERE
var2="searchtext"
OR var4="searchtext"
OR vchar4 LIKE "%searchtext%"
OR ......
LIMIT 390, 10
ORDER BY var2 DESC
3) Для вывода данных отдельной строки на отдельной странице:
SELECT * FROM tbl WHERE id="2A34SDF2fRfriow4ASF34ge135grere"
Вопросы такие:
1. Можно ли сделать быстро с MYSQL или нужно переходить на что-то другое (PostgreSQL?)
2. Если можно на MYSQL - какой движок использовать, на какие настройки конфига обратить внимание, как оптимизировать базу данных для более быстрого чтения
P.S. Скорость запись в бд - совершенно не важна.