AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 3031
Accepted
David
David
Asked: 2011-05-30 15:10:52 +0800 CST2011-05-30 15:10:52 +0800 CST 2011-05-30 15:10:52 +0800 CST

MySQL 中的链接表与存储过程性能

  • 772

假设我有一个子表单,在多条记录的数据表视图中,它使用户可以完全控制特定 MySQL 表的 CRUD。(记录由父表单过滤)。

选项 1 是简单地创建一个链接表并将其设置为子表单的记录源。这当然需要很少的工作。

选项 2 是创建一组存储过程,用于从 MySQL 表向/从本地临时表插入、删除、更新和读取记录。然后将子表单的记录源设置为本地表,并将适当的表单事件绑定到适当的存储过程调用。显然,这比选项 1 需要做更多的工作。

现在明显的问题是为什么选择选项 2?好吧,我一直在尝试用存储过程替换链接表,并且发现速度提高相当可观,尤其是在慢速网络上。我也做了一些侦探工作,并在 MySQL 日志文件中四处挖掘,我注意到链接表方法会生成数量惊人的 SQL 调用。这解释了我认为的性能差异。

无论如何,我现在正在考虑用存储过程选项替换所有链接表(也许只是重要的表)。有没有其他人有这种经验?有什么想法或建议吗?

mysql performance
  • 1 1 个回答
  • 1099 Views

1 个回答

  • Voted
  1. Best Answer
    gbn
    2011-05-30T20:42:11+08:002011-05-30T20:42:11+08:00

    当我使用 Access 时,我将这两种技术用作某种形式的命令查询分离(CQS)

    也就是说,表单可以读取基表,但所有写入都是通过存储过程进行的。

    就我而言,我选择这个是为了

    • 安全/审计原因
    • 更容易处理数据完整性
    • 为其他客户重复使用编写的代码

    注意:为了安全起见,我使用了 Access 视图而不是基表。

    为清楚起见,在评论后编辑:

    “只读”指的是对Access透明的服务器端权限。如果我们允许,Access 会尝试写入(而不是拦截调用并调用存储过程),并且我们会从数据库引擎中得到一个错误。

    • 2

相关问题

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve