在这里很难说出要问什么。这个问题是模棱两可,含糊不清,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开,
请访问帮助中心。
8年前关闭。
有一个查询运行得比我想要的慢,但是我无法共享详细信息。该查询已经返回了正确的结果,并且已经对其进行了重构,但是我无法使其足够快地运行。谓词在可能的情况下已经是可Sarg-
able
的。它已经正确地使用了联接,不要求任何额外的表,并且没有不必要的复制行或使用嵌套子查询的方式,这会降低它的速度。
我不是DBA,而且我已经不知道如何选择一个好的索引来加快查询速度。我可以更改表结构;没有DBA负责数据库,我拥有数据库服务器的权限。
我应该采取哪些步骤来优化SQL查询?
简介: 这里有很多要讨论的内容,由于SQL的复杂性,任何人都不可能完全帮助您进行查询-
这与查询的内容,表的大小以及表的大小有关。正在使用的数据库系统是。如果您不知道什么是索引或如何使用索引,请参见此处:数据库索引如何工作?。
注意事项:
同样,如果您的系统具有DBA,请在索引任何内容之前与他们联系,尤其是在实时系统上。如果您对他们友善,他们甚至可以提供帮助。如果该系统被其他许多人使用,则在更改诸如索引之类的内容之前要小心。如果数据用于多种查询类型,请确保没有在它们上产生大量冲突或重叠的索引。
句法。 标准(SQL92)使用:CREATE INDEX [index name] ON [table name] ( [column name] )
。该语法在几乎所有系统上都应适用。如果表上只需要一个索引,并且还没有聚集索引,则可以使用:CREATE [Unique] Clustered INDEX [index name] ON [table name] ( [column name] )
-如果不能有多个具有相同值的项目,则该索引应该是唯一的。如果您无法使用它,请参阅这篇文章以了解更多详细信息:如何为数据库列建立索引。
应该为哪些表建立索引?
用于查询的任何表(尤其是数据是静态的或仅获取新值的表)都是不错的选择。如果该表在您的查询中,并且具有join语句,则您可能希望在要连接的列上有一个索引。
应该为哪些列编制索引? 有很多关于选择最佳索引以及如何正确索引数据库的书籍。如果您不想深入研究索引,建立索引的基本经验法则是:按以下顺序进行索引:
on Table1.columnA=Table2.ColumnA and Table1.columnB=Table2.ColumnQ
)where Table1.columnN=鈥橞ob鈥� and Table1.columnS<20
)还:
Alter table Table1
alter column columnN int not null
完成所有这些操作,您就可以顺利进行。 但是,如果您定期需要这些东西,请学习它!
买书,在线阅读,查找信息。那里有很多信息,这是一个很深的话题,但是如果您知道自己在做什么,则可以使查询更好。
我在索引此查询时遇到问题: 结果是: 我知道它显示0.00秒是执行时间,但此查询将运行多次,它显示它会减慢我的数据库,我不知道为什么! 每次我看到行检查是459448这个查询,所以它在某些原因对我的工作相当糟糕。 有人能给个建议吗?我如何为odata表制作合适的索引?或者我可以使用子查询来修复它? 这些表是: 解释odata: 并解释 wdata: 不得不说wdata.id和odata.vref已
本文向大家介绍Mysql使用索引实现查询优化,包括了Mysql使用索引实现查询优化的使用技巧和注意事项,需要的朋友参考一下 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的。 1.索引的优点 假设你拥有三个未索引的表t1、t2和t3,每个表都分
问题内容: 我有一个查询,使用带通配符的“ like”来搜索客户端。例如: 它还可以在“ where”子句中使用较少的参数,例如: 谁能说出优化这种查询性能的最佳方法是什么?也许我需要创建一个索引?该表在生产中最多可以有1000K条记录。 问题答案: 要在模式具有表单的位置上做很多事情,您需要查找SQL Server的全文本索引功能,并使用代替。照原样,您正在执行全表扫描,因为普通索引对搜索以通配
在MySQL数据库中,我遇到了一个问题,当我在执行一个JOIN查询时,发现查询性能显著降低,特别是在两个大表之间进行JOIN操作时。我的两个表分别是orders(订单表,大约有1000万条记录)和customers(客户表,大约有500万条记录),它们通过customer_id字段相关联。我已经为这两个表的customer_id字段建立了索引,但是在执行如下JOIN查询时,耗时仍然较长: 运行环境
问题内容: 我有两个表: 这是我的查询: 并为此: 它在第一个表上使用的全索引扫描进行排序,但不使用y索引进行连接(在解释中)。这对性能非常不利,并且会杀死整个数据库服务器,因为这是一个非常频繁的查询。 我尝试使用反转表顺序,但这给了,甚至更糟。 有什么办法可以使mysql同时使用索引进行连接和排序? ===更新=== 我真的很绝望。也许某种形式的非规范化可以在这里有所帮助? 问题答案: 如果您有
问题内容: 我最近一直念叨如何和作品。我的理解很简单(如果有错,请纠正我): 的数据结构,其背和IS :根据索引列(或键)对数据进行物理排序。每个只能有一个。如果在创建表的过程中未指定No ,则服务器将在上自动创建一个。 问题1 :由于数据是根据索引进行物理排序的,因此这里不需要额外的空间。这样对吗?那么,当我删除创建的索引时会发生什么? :在中,树的包含列值和指向数据库中实际行的指针(行定位符)