gpt4 book ai didi

php - 存储过程对我的情况有用吗?

转载 作者:行者123 更新时间:2023-11-29 00:57:48 25 4
gpt4 key购买 nike

我最近开始为一家经营小型网站的小型企业工作。我无意中听到一位同事提到我们的网站或 MySQL 数据库每秒被命中约 87 次。

我今天也接到任务,重组这些数据库中的一些表。我在学校被教导说,良好的数据库设计要求表示两个表之间的多对多关系,我应该使用第三个表作为中间人。 (第三个表将包含两个表中两个相关行的 ID。)

目前我们使用两个独立的数据库,总共不到 40 个表,没有一个表的行数超过 1k。现在,一些 PHP 脚本使用第三个表来关联某些行,这些行具有第三列,如果一个表中的一行与其他表中的多个行相关联,则第三列用于存储逗号分隔的字符串。因此,如果他们想使用第三列中的 id,则必须获取字符串并将其分开并获得正确的 id。

当我提到我们应该像良好的设计要求那样正确地切换到使用第三个表时,他们说这会导致如此小的表的开销太大,因为他们必须使用多个连接语句来获取他们想要的数据。

最后,我的问题是为这些连接创建存储过程是否会减轻这些连接对系统的影响?

非常感谢,抱歉解释冗长!

最佳答案

根据实际情况,您真的应该尝试重新设计您的数据库架构。

two separate databases, totalling to a little less than 40 tables, with no table having more than 1k rows

听起来它没有被适本地规范化——或者它已经远远没有被积极规范化并且会从一些多态性中受益。

comma separated ids

哦,亲爱的 - 代理键 - 本质上并不坏,但通常是糟糕设计的标志。

a third table to relate certain rows that has a third column that is used to store a string of comma separated ids

所以距离正常化还有很长的路要走 - 这真的很糟糕。

they said that it would cause too much overhead for such small tables

我认为是时候开始润色您的简历了。听起来“他们”对 DBMS 系统知之甚少。

但是如果您必须坚持这一点 - 从设计良好的数据库(提示 - 使用 View )模拟设计糟糕的数据库比反过来要容易得多。离线重新设计数据库并比较调优查询的性能——它至少会运行得一样快。添加 View 以允许旧代码不加修改地运行,并比较执行关键操作所需的代码量。

关于php - 存储过程对我的情况有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com