是什么使得 SQL 语句可控制?

2024-01-07

根据定义(至少从我所看到的),可优化意味着查询能够让查询引擎优化查询使用的执行计划。我尝试查找答案,但似乎没有太多关于该主题的内容。所以问题是,什么使 SQL 查询可控制?任何文档将不胜感激。

以供参考:Sargable http://en.wikipedia.org/wiki/Sargable


最常见的会进行查询的事情不可控制的是在 a 中包含一个字段function在 where 子句中:

SELECT ... FROM ...
WHERE Year(myDate) = 2008

SQL 优化器无法使用 myDate 上的索引,即使存在索引也是如此。从字面上看,它必须为表的每一行评估这个函数。使用起来更好:

WHERE myDate >= '01-01-2008' AND myDate < '01-01-2009'

其他一些例子:

Bad: Select ... WHERE isNull(FullName,'Ed Jones') = 'Ed Jones'
Fixed: Select ... WHERE ((FullName = 'Ed Jones') OR (FullName IS NULL))

Bad: Select ... WHERE SUBSTRING(DealerName,4) = 'Ford'
Fixed: Select ... WHERE DealerName Like 'Ford%'

Bad: Select ... WHERE DateDiff(mm,OrderDate,GetDate()) >= 30
Fixed: Select ... WHERE OrderDate < DateAdd(mm,-30,GetDate()) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是什么使得 SQL 语句可控制? 的相关文章

  • 为什么某些 float < integer 比较比其他比较慢四倍?

    将浮点数与整数进行比较时 某些值对的计算时间比类似大小的其他值要长得多 例如 gt gt gt import timeit gt gt gt timeit timeit 562949953420000 7 lt 56294995342100
  • 复杂的 Xpage 部分刷新需要很长时间

    我有一个复杂的 xpage 其中有很多嵌套的自定义控件 每次我执行部分刷新都需要超过 4 秒才能完成 如果我消除了复杂性 它就可以正常工作并且速度如您所愿 我对这个复杂的 Xpage 进行了测试 即使使用部分执行模式 这个简单的测试也需要
  • 使用 Java-Large 文件查询 JSON 文件

    我正在尝试使用 java 解析下面的 JSON 文件 我需要能够 按 ID 或名称或对象中的任何字段搜索文件 也在字段中搜索空值 搜索应返回整个对象 该文件将会很大 并且搜索应该仍然很省时 id 1 name Mark Robb last
  • 字节数组的快速位移 - CMAC 子键

    我需要尽可能快地实现 16 字节数组的左移JavaCard 我尝试了这段代码 private static final void rotateLeft final byte output final byte input short car
  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • SQL Server xp_cmdshell

    有没有其他方法可以通过以下方式获取文件名列表T SQL以外 INSERT INTO backups filename EXEC master sys xp cmdshell DIR b c some folder with sql back
  • MySQL 性能 DELETE 或 UPDATE?

    我有一个超过 10 7 行的 MyISAM 表 向其中添加数据时 我必须在最后更新 10 行 删除它们然后插入新行更快 还是更新这些行更快 应更新的数据不是索引的一部分 索引 数据碎片怎么样 UPDATE到目前为止要快得多 当你UPDATE
  • Itertools 与嵌套循环性能

    我必须生成列表中所有两对项目组合 现在 我知道有两种方法可以实现这一点 嵌套 for 循环和 python 的内置迭代工具 from itertools import combinations foo 1 2 3 4 for i in xr
  • 如何在存储过程中使用名称求和和分组?

    我想对钱列求和 但我想要状态中的组名称和代码 这是存储过程代码 Sql Server 2008 SELECT um upmoney as money um pId as code um FName as name up status as
  • Python(和 Java)中最快的数据打包

    Sometimes http www codinghorror com blog 2009 01 the sad tragedy of micro optimization theater html our host is wrong na
  • 默认情况下 dbo 架构中的 EF 6 Code First __MigrationHistory

    我是代码优先实体框架的新手 第一次运行我的应用程序后登录数据库时 当我看到 MigrationHistory 表时 我有点困惑 我现在了解对此表的需求 但不喜欢它位于用户表内的标准 dbo 模式中 我认为它很唐突且有风险 我的第一个想法是将
  • SQL 中的代码重用和模块化

    代码重用和模块化对于 SQL 存储过程编程来说是一个好主意吗 如果是这样 将这些功能添加到 SQL 存储过程代码库的最佳方法是什么 我通常为常见且重复的任务创建标量值函数 我发现它不仅可以简化与现有程序类似的新程序的开发 而且还有助于错误跟
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • TSQL:无法对 COUNT(*) 执行聚合函数 AVG 来查找一天中最繁忙的时间

    考虑一个保存日志数据的 SQL Server 表 重要的部分是 CREATE TABLE dbo CustomerLog ID int IDENTITY 1 1 NOT NULL CustID int NOT NULL VisitDate
  • 如何在 SQL Server 2008 中使用 GUID 数据类型?

    我想使用建立一个员工表SQL SERVER 2008 在我的表中 我希望为每个员工提供一个 ID 我听说过GUID我有点明白它是一种数据类型 但我无法使用它 你能告诉我使用它的方法吗 顺便说一句 假设我想要这样的东西 CREATE TABL
  • 公共领域还好吗?

    在你像我最初那样做出直觉反应之前 请阅读整个问题 我知道它们让你感觉很脏 我知道我们以前都被烧伤过 我知道这不是 好风格 但是公共场所可以吗 我正在开发一个相当大规模的工程应用程序 该应用程序创建并使用结构的内存模型 从高层建筑到桥梁再到棚
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • 调整 Oracle 数据库以加快启动速度(闪回)

    我正在使用 Oracle 数据库 11 2 我有一个场景 我发出FLASHBACK DATABASE经常 似乎有一个FLASHBACK DATABASECycle 会重新启动数据库实例 大约需要 1 分钟 我的设置花了 7 秒 数据库很小
  • 为什么 java.util.Arraylist#clear 按照 OpenJDK 中的方式实现?

    http grepcode com file repository grepcode com java root jdk openjdk 6 b14 java util ArrayList java 473 http grepcode co

随机推荐

  • Postgresql 中的 Postgresql 全文搜索 - 日语、中文、阿拉伯语

    我正在为我当前的项目设计一个 postgresql 全文搜索功能 到目前为止 它可以与 ispell myspell 词典配合使用 现在我需要添加对中文 日文和阿拉伯文搜索的支持 我从哪说起呢 没有适用于这些语言的模板或词典 据我所知 它可
  • SQL - 将单列划分为多列

    我有以下 SQL 问题 如何使用 SELECT 命令将列 内部文本 分成两个带有分割文本的单独列 我需要使用空格字符分隔文本数据 我知道最好举个例子来让它变得容易 所以 SELECT COLUMN A FROM TABLE1 output
  • 清理AjaxToolkit AsyncFileUpload控件

    我在我的 aspx net 页面中使用 AsyncFileUpload 控件 该控件在更新面板内运行 我可以成功地将文件异步上传到服务器 我的问题是 每个文件上传后我无法刷新整个页面 所以我需要弄清楚如何清除上次上传的文件 这样当用户选择新
  • 了解多处理:Python 中的共享内存管理、锁和队列

    多重处理 https docs python org 2 library multiprocessing html module multiprocessingpython中的一个强大的工具 我想更深入地了解它 我想知道什么时候使用regu
  • 奇怪的 JavaScript 性能依赖于变量范围

    在测试一个 JavaScript 项目的性能时 我注意到一种非常奇怪的行为 JavaScript 成员访问性能似乎很大程度上受到它们所在范围的影响 我编写了一些性能测试 结果因多个数量级 我在 Windows 10 64 位上使用以下浏览器
  • 全局点击事件处理程序(WithEvents)

    我正在尝试创建一个类模块 当有人单击我表单中的六十个文本框之一时 它将充当全局处理程序 文本框代表一周的时间卡 显示一周 7 天的上班时间 下班时间 午餐开始 结束 持续时间 每日总小时数等信息 当有人单击一天中的任何一个框时 所有框都会解
  • Angular2 如何在 HTML5 模板中显示 localStorage 值?

    我在 localStorage 中存储 2 个密钥 我想在我的模板中显示其中之一 我无法访问这些值 我什至创建了一个接口来存储 localStorage 中的 currentUser 键的值 应该如何实施呢 这是当前的代码 Service
  • stl::list 中的 C++ 接口

    课程界面 class ILesson public virtual void PrintLessonName 0 virtual ILesson STL容器 typedef list
  • MemoryCache.Set 返回删除的缓存项

    我正在使用 NET 4 0MemoryCache http msdn microsoft com en us library dd780634 28v vs 100 29 aspx类 并且我想以线程安全的方式添加或替换缓存中的现有项目 但我
  • golang 在 ubuntu 14.04 LTS 中获取大量读取 tcp ip:port i/o 超时

    我编写了一个 golang 程序 过去几个月在 ubuntu 12 04 LTS 中运行良好 直到我将其升级到 14 04 LTS 我的程序专注于发送 HTTP 请求 每秒发送大约 2 10 个 HTTP 请求 HTTP 请求地址各不相同
  • python 如何关闭已被 gc'ed 的文件?

    我一直认为如果在未关闭的情况下打开文件就会泄漏 但我刚刚验证了如果输入以下代码行 文件将关闭 gt gt gt f open somefile txt gt gt gt del f 纯粹出于好奇 这是如何工作的 我注意到该文件不包含 del
  • jQuery 调整窗口大小

    我有以下 JQuery 代码 document ready function var containerHeight window height if containerHeight lt 818 footer css position s
  • Django:如何更改内联表单集中的字段小部件

    我是 Django 新手 我想我在文档中遗漏了这一点 问题是在内联表单集中我没有声明表单 只是传递两个模型来构造它 我想知道如何使用内联表单集更改单个字段的小部件 从 Django 1 6 开始 https docs djangoproje
  • 更改内容 infowindow 地图 v3

    我试图使更改 DIV 内显示的内容 即信息窗口的内容 成为可能 我已经能够将信息窗口内的内容从 Hello 更改为 YO 问题是当我关闭信息窗口并重新打开它时 更新的内容会恢复为原始内容 下面是我的代码 google maps event
  • Javascript / jQuery:如何动态添加行到表体(使用数组)

    我是 Javascript 新手 希望有人能帮助我解决这个问题 我有一个 HTML 页面 上面有一个表格 我想使用JS动态添加特定内容的行到表体 到目前为止 我有下面的代码 这里被缩短了 实际上有更多的行和列等 这导致了我以下问题 当我运行
  • Django日期查询从最新到最旧

    我正在从头开始构建我的第一个 Django 程序 并且在尝试将项目从最新到最旧打印到屏幕上时遇到了麻烦 我的模型在数据库中填充了一个自动日期时间字段 如下所示 Model from django db import models from
  • 使用 bash 连接两个文件的最简单方法,它们的两个键都出现在结果中

    我有 2 个输入文件 file1 A 0 01 B 0 09 D 0 05 F 0 08 file2 A 0 03 C 0 01 D 0 04 E 0 09 我想要的输出是 A 0 01 0 03 B 0 09 NULL C NULL 0
  • 使用 Android 资源字符串时出现错误的是/否文本

    我正在 Android 的 Mono 中构建一个对话框 如下所示 AlertDialog Builder builder new AlertDialog Builder Context builder SetTitle Context Ge
  • 使用curl登录https站点

    我正在尝试登录一个网站 该网站使用自动提交和随机密钥来提交表单 我尝试了几种方法但无法通过 所以这是我的代码 任何答案将不胜感激 提前致谢 我的假帐户通行证和用户名也可以在代码中提供给那些想要尝试的人 我的网址有点长 include sim
  • 是什么使得 SQL 语句可控制?

    根据定义 至少从我所看到的 可优化意味着查询能够让查询引擎优化查询使用的执行计划 我尝试查找答案 但似乎没有太多关于该主题的内容 所以问题是 什么使 SQL 查询可控制 任何文档将不胜感激 以供参考 Sargable http en wik