我有一个包含大量数据的数据库,虽然我没有参与设置,但我必须使用它。
在这个数据库中有点像查找表。但是,此表没有指向任何其他表的链接。它基本上采用以下形式
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;
现在这些表有数万行数据。我真正的问题是上述是否有效?然而,我得到了数据库,我没有看到任何其他方式可以做到这一点(我无法触摸数据库)。有什么办法可以让它变得更有效吗?
任何建议表示赞赏
由于
答案 0 :(得分:1)
为什么要检查第二张表中的输入?您已经过滤了第一个表中的输入:
npm install
在这种情况下,您不必进行2次查询。只要第二个就足够了。或者只是在第二个表中有电影数据,并为卡通,动画等单独的表格。因为那时你不会访问'WHERE'子句,只是:
SELECT table_name FROM lookup_table WHERE input LIKE Movie;
第二个建议:使用=而不是LIKE。如果您知道确切的输入字符串,则无需进行模式匹配。