Mysql性能,一两个表

Jen*_*ell 1 php mysql sql performance select

我使用PHP和mysql.

假设我有一个包含10 000行的数据库表.下面哪个案例最好的表现明智?

情况1

两张桌子,productscategories.

SELECT * FROM products INNER JOIN categories ON products.category_id = categories.id
Run Code Online (Sandbox Code Playgroud)

制品

id
name
category_id
Run Code Online (Sandbox Code Playgroud)

分类

id
name
Run Code Online (Sandbox Code Playgroud)

案例2

一个表,products包含所有数据.

SELECT * FROM products
Run Code Online (Sandbox Code Playgroud)

制品

id
name
category_name
Run Code Online (Sandbox Code Playgroud)

问题(S)

  • 哪种情况最佳?
  • 猜猜,用类似的结构获取10 000行数据需要很长时间吗?
  • 其中一个案件的任何陷阱?

从我的角度来看,这Case 1是"正确"的做法,但我会通过使用来节省一些开发时间Case 2.也许表现呢?

Gor*_*off 6

这个评论太长了.第一种是存储此数据的正确(即SQLish)方式.它允许您执行以下操作:

  • 使用标准外键关系验证插入和更新的类别名称.
  • 更改类别名称并使其影响所有产品.
  • 包括有关类别的其他信息,例如短名称,长描述,添加日期等.

表现不是主要考虑因素.SQL引擎通过使用花哨的连接算法和索引来处理性能.它可以做到这一点,因此您可以以最合理和可维护的方式为您的应用程序构建数据.

也就是说,哪个表现更好取决于许多因素(类别名称有多长,有多少个不同的名称,产品记录有多宽).在使应用程序以最佳方式工作时,两种方案之间的性能差异可能并不重要.