MySQL 布局需要验证

MySQL Layout needs validation

我想确认一下,我的 table 布局是生产安全的。也许你们可以给我一些关于设计的建议。所以我的 table 看起来像这样:

AI_Index   PartName   String1   String2 ... String5 ... TINYINT1 TINYINT2 TINYINT3 
1          Example    L         somestuff   morestuff   0        1        0                  
2          Example    X         morestuff   andmore     1        1        1

澄清一下:

AI_Index 为每个添加的值自动递增。 PartName 表示一个文件名。所有其他字符串和 tinyint 都在描述值 String1PartName 很可能不会是唯一的,它总是在那里出现大约 5-10 次。初步估计将带来约 1000 个不同的零件。所以数据库将有大约 5.000-10.000 行。

我正在使用 VB.NET 和 MySQL 连接器连接到数据库。如果您在 SolidWorks 中打开零件,查询将检查 activedoc 是否存在于 PartName 列中。如果是这样,将显示一个用户窗体,显示列 String1 中的所有值以及 String2、String3、String4、String5、Tinyint1、Tinyint2 和 Tinyint3[=36 中的值=].大约有 40 人使用 SolidWorks,经常更换活动零件。这意味着每分钟约有 500 次查询,只是检查零件是否存在。

我的问题如下:

  1. PartName 添加为索引是否有意义?我多次读到错误的索引决策会使数据库变慢。
  2. 强大的查询是什么样的?我建议如果我创建一个带有 SELECT DISTINCT PartName 的视图,则对活动部分的查询会更快。这样对吗?
  3. 如果 PartName 中存在 ActiveDoc,那么创建 returns TINYINT 的 MySQL 函数是否有意义? TableView 或函数会更快吗?

你能不能:

SELECT String1, String2, String3, String4, String5, Tinyint1, Tinyint2, Tinyint3
 WHERE PartName = 'Example';

如果结果为空,则无需显示表格。然后您手头就有了可以立即显示的数据。一个查询,一个结果集。
DISTINCT 会使它变慢。您将不得不进行一些压力测试以查看您的服务器是否可以每分钟处理 500 个查询,因为除了索引和查询之外还有很多因素。