SELECT语句中触及的表/列的列表

时间:2017-07-18 15:40:03

标签: sql postgresql

使用postgres,有没有办法确定在给定SQL查询时将触摸哪些表/列?我试图看看是否给出了SQL查询,用户(学生)试图从一组特定的表中返回数据。

我想以编程方式执行此操作,以便人工审核代码不是必需的。我也试图避免无效输入可能传递简单字符串搜索检查的情况,例如在注释中包含所有表名。

2 个答案:

答案 0 :(得分:2)

要完全通过Postgres这样做,EXPLAIN应该在这里帮助你。 EXPLAIN将显示给定查询访问的表,同时使用列/索引的一些详细信息。

您可以将此问题调整为适用于字符串匹配的问题。通过简单地解析给定查询的任何注释部分,您应该能够相当可靠地搜索您想要了解的任何列/表。

答案 1 :(得分:1)

使用Explain运算符可以了解数据库在后台进行的计算和索引搜索。

点击此链接https://www.postgresql.org/docs/9.6/static/using-explain.html

PostgreSQL为它收到的每个查询设计一个查询计划。选择正确的计划以匹配查询结构和数据属性对于良好的性能至关重要,因此系统包括一个复杂的计划程序,试图选择好的计划。您可以使用EXPLAIN命令查看规划器为任何查询创建的查询计划。

{{1}}