Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个读量很大的MySQL数据库中,是否值得创建一个包含item_id和item_摘要(来自其他5个表的数据)的两列表?_Mysql_Database_Database Design - Fatal编程技术网

在一个读量很大的MySQL数据库中,是否值得创建一个包含item_id和item_摘要(来自其他5个表的数据)的两列表?

在一个读量很大的MySQL数据库中,是否值得创建一个包含item_id和item_摘要(来自其他5个表的数据)的两列表?,mysql,database,database-design,Mysql,Database,Database Design,在本例中,我正在从事一个涉及图书馆图书数据数据库的项目。我在这个数据库中有几个表: 书籍(书号、标题、描述、类型、语言、购买日期、章节、文字、书评数量) BookSearchData(图书id、全文可搜索的标题和说明) 类型(类型id到类型名称) 语言(语言id到语言名称) 签出数据(图书id、上次签出日期、签出用户id) 表构造的基本原理:我制作了单独的书籍和CheckoutData表,因为在我的设置中,我将频繁请求CheckoutData信息,并且除了CheckoutData字段中包含的

在本例中,我正在从事一个涉及图书馆图书数据数据库的项目。我在这个数据库中有几个表:


书籍(书号、标题、描述、类型、语言、购买日期、章节、文字、书评数量)

BookSearchData(图书id、全文可搜索的标题和说明)

类型(类型id到类型名称)

语言(语言id到语言名称)

签出数据(图书id、上次签出日期、签出用户id)


表构造的基本原理:我制作了单独的书籍和CheckoutData表,因为在我的设置中,我将频繁请求CheckoutData信息,并且除了CheckoutData字段中包含的数据之外,不需要任何其他数据。希望这是一条正确的道路

然而,最频繁的数据请求将是图书数据摘要,它目前涉及所有表之间的联接。图书结果包括以下信息:

  • 头衔
  • 描述
  • 流派名称
  • 语言名称
  • 购买日期
  • 章节
  • 言语
  • 审查计数
  • 退房了?(这取决于与书籍关联的CheckoutData表行中CheckOutUser id的值是否等于0)
我的问题:如果我在这个数据库中创建了另一个表,其中包含一个简单的两列设置,包括一个book_id和一个book_数据摘要,您认为这会有帮助吗(性能方面)

正如你所想象的,这本书应该是某种整数。book_data_summary将是文本类型的字段

在我看来,问题是……这引入了大量的数据冗余。这还意味着,每次书籍被签出(表:CheckoutData)或如果用户添加了书评(表:Books),我还需要更新book_data_summary字段

这值得做吗

谢谢

编辑:我需要澄清一些事情。在本例中,我正在做一个高速库场景(是的,这看起来有点傻,但这是一个实验项目)。CheckoutData表将接收大量插入-非常频繁(我们说的是…每分钟几百次)。图书结果的请求率大致相同,每次可能请求10或20本图书


因此,成吨的签出,以及成吨的图书摘要请求。

我不喜欢两列设置,但主查询的非规范化版本(例如,创建一个视图,将所有5个表适当地连接起来,然后从那里插入另一个表)将有真正的好处

(我们说的是……每人几百美元 分钟)

每分钟60秒,每秒大约10次插入。这并不多,一个数据库每秒可以处理数千次插入


如果您有一个性能问题的查询,请开始使用查看发生了什么,以及为什么事情进展缓慢。

@Tyler Eaves-我不完全确定您的意思。您是否介意详细介绍一下您的示例?您将构建一个包含所有连接表中的列的表,并在某个时间间隔或数据更改时对其进行更新。所以基本上你可以直接查询这个表,得到与连接相同的结果。哦,你是说一个表而不是我的五个表?对不起,误会了。现在我明白你第一句话的意思了。唯一的一件事是(我在我的原始帖子中忽略了强调这一点),签出数据将接收大量插入-非常频繁(我们说的是…每分钟几百次)。图书结果的请求率大致相同,每次可能调用10或20个图书条目。因此,在单表设置中,会有较高的读写速率。这会改变你的建议吗?谢谢啊…我只是在MySQL中查找“视图”。实际上我并不熟悉这个术语,所以我认为它是指由一些连接生成的临时表。现在我明白你的真正意思了。是的,这肯定会改变一切。在这种情况下,我只能等待,看看这是否真的是一个性能问题。谢谢。我想我已经大大低估了数据库的性能,哈哈。我担心在混合中引入太多连接会如何影响性能,我正在尝试进行预优化…可能没有我想象的那么必要。