提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:胡涛|2023-10-30 10:28:38.510|阅读 24 次
概述:在本文中,我们将探讨使用被认为可以接受的各种场景以及可能导致并发症的情况。欢迎查阅~
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
简写命令可能是开发阶段最方便、最常用的 SQL 语句之一,但这真的是生产环境的最佳实践吗?在本文中,我们将探讨使用被认为可以接受的各种场景以及可能导致并发症的情况。我们还将演示如何有效识别带有星号的 SQL SELECT 语句并快速修复。
SQL 中的命令用于从表中选择所有列。此命令从子句中指定的表名中获取每一列的每一行。SELECT *FROM
这是如何使用的基本示例:SELECT *
SELECT * FROM table_name;
虽然该命令对于快速而脏的查询非常方便,尤其是在开发和测试期间,但由于各种原因(包括性能影响和未来的可维护性),通常不建议将其用于生产使用。
让我们考虑下面的例子。如果您在生产环境中运行查询,您将从Users表中提取所有数据,其中可能包括头像图片等大型字段。这可能会占用大量资源,消耗大量内存和 CPU。SELECT * FROM Users;
更有效的策略是仅指定实际需要的列,从而减少查询所需的数据库资源。例如:
SELECT
FirstName,
LastName,
Email,
Login
FROM Users;
对于频繁执行的查询(例如身份验证中使用的查询),您可以通过创建覆盖索引来进一步优化性能。覆盖索引包含查询所需的所有字段,这可以显着加快查询执行速度。
CREATE NONCLUSTERED INDEX IDX_Users_Covering ON Users
INCLUDE (FirstName, LastName, Email, Login);
SQL Server 的查询优化器在可能的情况下更喜欢使用覆盖索引,因为这样可以避免筛选聚集索引。但是,如果您使用,则现有索引覆盖所有列的可能性非常低。SELECT *
即使在创建覆盖整个表的非聚集索引的极端情况下,如果表的大小显着增长,这样的索引也会失去效力。因此,使用不仅会导致性能问题,还会破坏索引策略的优势,使其随着表的发展而降低效率。SELECT *
当谈到 SQL 查询时,星号 ( *) 的使用经常引发开发人员、数据库管理员和数据架构师之间的争论。让我们问问 ChatGPT-4(OpenAI 开发的人工智能聊天机器人)是否有理由避免使用.SELECT *
我们同意 ChatGPT-4 的观点,即使用 SELECT ALL 可能会导致漏洞和性能问题。它还会使您的代码可读性较差,并且更难以维护。但是,我们还应该提到重复列名的问题。
在 SQL 中使用多个连接表可能会导致重复的列名,从而使应用程序难以解释结果。例如,以下查询将生成重复的Customer列:SELECT *
SELECT *
FROM Sales.Customer AS c
INNER JOIN Sales.SalesOrderHeader AS soh
ON c.CustomerID = soh.CustomerID;
当应用程序尝试按列名称解析结果集时,这可能会导致问题。如果您尝试使用创建临时表,您将因重复的列名而遇到错误:SELECT * INTO
SELECT * INTO TempCustomerOrders
FROM Sales.Customer AS c
INNER JOIN Sales.SalesOrderHeader AS soh
ON c.CustomerID = soh.CustomerID;
以下是我们关于在 SQL Server 中负责任且有效地使用语句的专家建议。SELECT *
何时避免SELECT *
生产代码:在生产代码中,您应该显式指定列名,以防止表结构发生变化时发生意外更改。
性能:检索所有列通常意味着比仅指定实际需要的列更多的磁盘 I/O、传输的数据和更多的内存使用量。
视图和存储过程:避免在视图和存储过程中使用。对基础表的更改可能会破坏代码。SELECT *
连接操作:当您连接多个表时,使用可能会导致列名不明确,并且传输的数据量超出必要。SELECT *
应用程序:在与数据库交互的应用程序代码中,请始终指定需要使用的列,以避免重大更改和性能下降。
什么时候可以接受SELECT *
临时查询:对于快速数据检查,只要这些查询不进入生产环境,使用通常就可以了。SELECT *
初始数据探索:当您最初探索新的数据库或表架构时,可以快速查看表数据。SELECT *
管理脚本:有时,管理或数据迁移脚本可能需要选择所有列。然而,即使在这种情况下,显式指定列通常也更安全。
显式列:始终指定您需要哪些列。
限定列名:连接表时,用表名或别名限定列名以避免歧义。
索引:确保您有适当的索引,以加快实际使用的列的查询性能。
监视和优化:始终检查查询执行计划并使用 SQL Server Profiler 或扩展事件来捕获和优化有问题的查询。
代码审查:定期审查代码是否存在可能导致问题的任何情况。SELECT *
关于 dbForge 搜索
dbForge Search是 SQL Server Management Studio 的免费插件,旨在在 SQL Server 中进行高效的数据库搜索。它简化了在存储过程或查询中定位 SQL 对象、数据甚至特定文本的任务。凭借其用户友好的界面和强大的功能,dbForge Search 可以帮助开发人员和数据库管理员快速识别和管理大型复杂 SQL Server 数据库中的元素。
如何使用 dbForge 搜索查找 SELECT * 语句
在 SQL Server 数据库中定位语句可能是优化和最佳实践实施的关键步骤。如果您使用 dbForge Search,查找这些语句是一个简单的过程。操作方法如下:SELECT *
1. 在对象资源管理器中,右键单击要搜索的数据库。然后选择“搜索” -> “查找对象”。
2. 在搜索框中,输入您要使用的搜索短语。在此示例中,我们输入SELECT *。
注意:在开始搜索之前,请确保清除所有搜索选项。如果您选择Use WildCards,dbForge Search 将查找数据库中所有出现的 SELECT 语句。
3. 按Enter或单击“开始搜索”。
搜索完成后,您可以在 “搜索结果” 网格中看到找到的结果。当您在网格中选择结果时, 网格下方的预览 窗口将显示与所选结果关联的 DDL 语句。
找到所有包含 的语句后,您可以使用 dbForge SQL Complete(Devart 开发的一个强大的插件)有效地优化它们。dbForge SQL Complete是一种高级 SQL 代码完成和生产力工具,可与 SQL Server Management Studio (SSMS) 和 Visual Studio 无缝集成。它提供了广泛的功能来提高 SQL 编码速度和质量,例如智能代码完成、代码片段和查询优化,帮助开发人员编写更高效、更具可读性的 SQL 查询。SELECT *
如何使用 dbForge SQL Complete 优化查询SELECT *
要删除包含 的语句,您可以使用功能。它使用户只需按Tab键即可将星号 (*) 替换为必要的表或视图列的列表。让我们看看如何逐步执行此操作。SELECT *
1. 使用 dbForge Search 查找要优化的查询。
2. 单击“在对象资源管理器中查找”。 ]
3. 在对象资源管理器中,右键单击所需的数据库对象并选择修改。将打开一个新选项卡,允许您对对象进行更改。
4. 将光标置于*in后面,然后按Tab。dbForge SQL Complete 将自动替换为表中以逗号分隔格式的所有列的列表。SELECT **
总之,在 SQL 语句中用显式列列表替换星号的做法SELECT不仅仅是风格问题,它具有切实的好处。它增强了查询的可读性,简化了调试,并通过减少需要检索和处理的数据量来潜在地提高性能。
在本文中,我们演示了如何使用 dbForge 产品线中的两个强大工具来识别和修复语句。这些实用程序使您可以比以往更轻松地优化 SQL 查询,从而提高性能和可读性。SELECT *
数据库管理工具交流群:765665608 欢迎进群交流讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
dbForge Studio for MySQL是与专业化MySQL数据库紧密相连的先进开发环境。
dbForge Fusion for MySQL这是一款非常给力的插件,专门用来简化MySQL数据库的开发。
dbForge Fusion for OracleOraDeveloper是一款功能强大的插件,专门用来提高开发效率,减少开发Oracle数据库应用程序的时间。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢