使用一个表还是多个表的mysql数据库,哪个更快?

使用一个表还是多个表的mysql数据库,哪个更快?,sql,mysql,Sql,Mysql,在我的网站上,你可以搜索“广告”或“分类广告”。有不同的类别 如果有多个表,每个类别对应一个表,搜索速度会更快吗?还是这无关紧要 我们谈论的是大约50万个广告 如果它不会减慢搜索速度,请解释你自己,让我理解为什么它不会,因为你的广告越多,搜索速度就越慢,这似乎是常识 谢谢,视情况而定 如果您已经构建了一个包含文本的非规范化表,那么它会因为一些原因而变得越来越慢。索引在一定程度上有帮助 如果您有一个包含多个表、主键和外键、索引等的规范化结构,那么它可以更加健壮和可扩展。一个数据库可以很好地处理50

在我的网站上,你可以搜索“广告”或“分类广告”。有不同的类别

如果有多个表,每个类别对应一个表,搜索速度会更快吗?还是这无关紧要

我们谈论的是大约50万个广告

如果它不会减慢搜索速度,请解释你自己,让我理解为什么它不会,因为你的广告越多,搜索速度就越慢,这似乎是常识

谢谢,视情况而定

如果您已经构建了一个包含文本的非规范化表,那么它会因为一些原因而变得越来越慢。索引在一定程度上有帮助


如果您有一个包含多个表、主键和外键、索引等的规范化结构,那么它可以更加健壮和可扩展。

一个数据库可以很好地处理500k的添加。在类别上添加一个索引,您就可以了


如果您将表格定义和类别分布添加到问题中,您可能会得到更好的答案:)

您的问题有点不清楚。我假设这种情况:

table: ads
id category ad_text
-- -------- ---------------------------
1  pets     sample text
2  family   sample ad
如果您对广告进行一次搜索,则每次搜索多个表比搜索一个表慢

然而,如果您打算根据“类别”将“广告”拆分为多个表,那么您将得到如下表名

  • 宠物广告
  • 家庭广告
  • 程序员广告
而且,从编程的角度来说,你知道你在寻找程序员广告,所以你可以直接搜索程序员广告表,然后把它们分出来会更快。几乎没有

不过,打破这些限制有很多缺点。您需要:

  • 一些可爱的代码,知道哪些表 搜索
  • 每次创建新类别时都会创建一个新表
  • 如果确定类别名称错误,则重命名表的步骤

鉴于我们掌握的信息有限,我强烈建议使用一个带有category列的表,然后继续将其规范化为自己的表。在那列上加一个索引。数据库的构建是为了处理正确组织的成吨的数据行,所以不用太担心这一点

显然,搜索较小的表(一个类别)比搜索较大的表名义上更快。然而,较大的表可能仍然是正确的设计。创建多个相同的表只会让开发人员和管理人员的生活变得悲惨。此外,如果对数据进行分段(例如,跨两个类别的搜索),则某些类型的搜索会更加困难

如果索引正确,单表方法将产生几乎与分段方法一样好的结果,同时提供适当设计的好处


(当然,当你说“单表”时,我假设你指的是一个包含广告实体核心属性的单表。可能还会有其他表。)

+1与公认的答案相比,这实际上是有道理的:)呵呵