sql - 根据输入获取更多 SELECT 数据
问题描述
似乎是一个简单的答案,但与我发现的情况相去甚远,使用存储过程可能不可行。
只是想问一下,因为可能有一个优雅的解决方案......(顺便说一句:我在 SQL Server 2014 上运行我的数据库)
我有一个非常简单的选择
select companyID, companyName
from tblCompanies
但是在某些情况下,我需要获取更大的数据集
select companyID, companyName, companyAddress, companyCountry
from tblCompanies
当然这可以通过创建多个存储过程来完成
- 获得公司精简版
- getCompaniesBasic
- getCompaniesFull 等
也可以使用 IF-ELSE 传递一个参数并在完全不同的 SELECTS 中进行选择。
不过,这两种方式似乎都很麻烦,有很多重复和可维护性问题。
也许可能有一种方法可以根据该输入值获取特定列,例如:
select
companyID, companyName,
case when @FULL = 1 then companyAddress end
from tblCompanies
解决方案
看起来你想多想了。你会节省多少时间。这个样本公司大概是毫秒?但是请考虑更大的下游,以了解您系统的其余部分。由于数据缓存,在不同时间做一些定时查询并记录统计信息。因此,有一天对您将调用的实际查询进行缩写,另一天(或同一天晚些时候)对所有列进行。你真的省了多少钱。
此外,获取更复杂/详细/JOIN 查询并执行类似操作。你节省了多少时间。
现在,想想界面。仅仅因为您有 10 个可用字段并且只想显示 2 个,这足以让用户界面仅显示这些字段。但是,如果用户更改为详细视图,则您已经拥有显示所有 10 个字段的数据,而无需返回数据库再次查询,这并没有破坏较小集仅节省一两秒的目的。
从维护的角度来看,我认为你正在寻找的东西是不值得的。
现在,如果有一些表包含机密数据,那么是的,我将从一个非机密的完整数据查询开始,而不是一个包含机密数据的完整数据,但无论如何这些都将取决于具体情况。
推荐阅读
- ms-access - 将共享点链接到访问权限
- javascript - Javascript 数组作为更具可读性的数组
- wordpress - 为移动应用程序构建 WooCommerce 的 REST API
- gnuplot - gnuplot“跳过没有有效点的数据文件”
- c - 将内存分配给指向指针变量的指针时出现分段错误 [C]
- ios - Xcode - 警告 ITMS-90735 - 无效的可执行部分 - 提交到 App Store
- python - Odoo10:给定客户编号时,如何自动获取合作伙伴的价值?
- r - 如何用 ggplot2 制作横幅/彩色框?
- android - 生成带有反应本机原因错误的未签名 APK:verifyReleaseResources'
- java - 无障碍服务中的意图分离