Suponha que eu tenha um subformulário, na exibição de planilha de dados para vários registros, que fornece ao usuário controle CRUD completo sobre uma tabela MySQL específica. (Os registros são filtrados pelo formulário-pai).
A opção 1 é simplesmente criar uma tabela vinculada e defini-la como fonte de registro para o subformulário. Isso, claro, requer pouco trabalho.
A opção 2 é criar um conjunto de procedimentos armazenados para inserir, excluir, atualizar e ler registros da tabela MySQL para/de uma tabela temporária local. A fonte de registro do subformulário é então definida para a tabela local e os eventos de formulário apropriados são vinculados às chamadas de procedimento armazenado apropriadas. Obviamente, isso requer muito mais trabalho do que a opção 1.
Agora, a pergunta óbvia é: por que escolher a opção 2? Bem, tenho experimentado a substituição de tabelas vinculadas por procedimentos armazenados e descobri que o aumento de velocidade é considerável, principalmente em uma rede lenta. Também fiz um pouco de trabalho de detetive e vasculhei os arquivos de log do MySQL e notei que a abordagem de tabela vinculada gera uma quantidade chocante de chamadas SQL. Isso explica a diferença de desempenho, suponho.
De qualquer forma, agora estou pensando em substituir todas as tabelas vinculadas pela opção de procedimentos armazenados (bem, talvez apenas as tabelas importantes). Alguém mais teve essa experiência? Quaisquer pensamentos ou conselhos?
Quando uso o Access, uso ambas as técnicas como alguma forma de Separação de Consulta de Comando (CQS)
Ou seja, o formulário pode ler as tabelas base, mas todas as gravações são feitas por procedimentos armazenados.
No meu caso, eu escolhi isso para
Observação: usei uma visualização para o Access, não uma tabela base também para alguma segurança.
Edite, para maior clareza, após os comentários:
"Somente leitura" refere-se a permissões do lado do servidor que são transparentes para o Access. O Access tentaria gravar se permitíssemos (em vez de interceptar a chamada e invocar um procedimento armazenado) e obteríamos um erro do mecanismo de banco de dados.