围绕设计的数据库定义查询

时间:2016-09-07 18:31:04

标签: mysql database

我有一个包含大量数据的数据库,虽然我没有参与设置,但我必须使用它。

在这个数据库中有点像查找表。但是,此表没有指向任何其他表的链接。它基本上采用以下形式

ID   |  input       |   table_name  |  
-------------------------------------
1    |  Movie       |   movie_tbl   |
2    |  Cartoon     |   cartoon_tbl |
3    |  Animation   |   cartoon_tbl |
4    |  Audio       |   audio_tbl   |
5    |  Picture     |   picture_tbl | 

该表比上述大很多,但结构如上所述。那么有人会访问我的网站。在这里,他们有一个输入字段。假设他们进入电影然后调用上面的表来查找带有电影的输入。然后它获取它需要查看的表。我会想象查询将类似于

SELECT table_name FROM lookup_table WHERE input LIKE Movie;

现在应该返回movie_tbl。我现在知道我需要在movie_tbl中搜索Movie并返回其行的所有数据。所以movie_tbl可能是这样的(数据将是某种类型的数据,列名称不同)

ID   |  input       |   col_1  |  col_2  |  col_3  |  
----------------------------------------------------
1    |  Movie       |   data   |  data   |  data   |
2    |  Cartoon     |   data   |  data   |  data   |
3    |  Animation   |   data   |  data   |  data   |
4    |  Audio       |   data   |  data   |  data   |
5    |  Picture     |   data   |  data   |  data   | 

所以现在我的查询将是这样的

SELECT * FROM movie_tbl WHERE input LIKE Movie;

现在这些表有数万行数据。我真正的问题是上述是否有效?然而,我得到了数据库,我没有看到任何其他方式可以做到这一点(我无法触摸数据库)。有什么办法可以让它变得更有效吗?

任何建议表示赞赏

由于

1 个答案:

答案 0 :(得分:1)

为什么要检查第二张表中的输入?您已经过滤了第一个表中的输入:

npm install

在这种情况下,您不必进行2次查询。只要第二个就足够了。或者只是在第二个表中有电影数据,并为卡通,动画等单独的表格。因为那时你不会访问'WHERE'子句,只是:

SELECT table_name FROM lookup_table WHERE input LIKE Movie;

第二个建议:使用=而不是LIKE。如果您知道确切的输入字符串,则无需进行模式匹配。