Подскажите, пожалуйста.
У меня есть база на Access 2010 объёмом 400Мб. Есть задача - перенести базу на MySQL. Акцесс предполагается использовать теперь только как обработчик, а данные хранить в MySQL.
Почему поставили такую задачу? Потому что в данный момент с этой базой работают несколько компов в локальной сети и сейчас из-за объёма базы скорость выполнения некоторых запросов занимает где-то 5 секунд, а где-то все 30 сек. Хотя тот же самый запрос в mysql (по опыту) занял бы не больше секунды.
В общем-то данные из акцесса я перенёс в mysql.
Access через ODBC соединил с mysql. Вместо ранее связки access-access получилась связка access-obdc-mysql. Это всё находится на одном компьютере.
В чём казус:
Делаю из акцесса поиск по primary key
SELECT * FROM users WHERE user_id=519967
Время выполнения:
то, что было:
access-access 5c
то, что я сделал, переведя на mysql:
access-odbc-mysql 125c
Ужасно.. Выходит, что акцесс теперь прежде чем выполнить запрос, видимо весь массив данных из mysql выкачивает в какую-то свою временно создаваемую базу access и только после этого выполняет sql-запрос.
Однако если я сделаю запрос непосредственно в самом mysql, то запрос выполняется мгновенно (за 0.0009с), что по опыту и в принципе логично, т.к. поиск-то идёт по первичному ключу.
Когда акцесс ищет внутри своей акцессовской базы, он почему-то занимается поиском методом перебора от начала таблицы к концу, хотя в свойствах таблицы поле user_id указано как ключевое (в акцессе это пишется так: Индексированное поле: Да (Совпадения не допускаются))
Как быть? Можно ли чтобы связка access-odbc-mysql работала мгновенно?
Или это в принципе невозможно и нужно полностью отказываться от акцесса?
http://www.sql.ru/forum/1084490/skorost-zaprosa-access-odbc-mysql