query-optimization相关内容
当我通过 agreement_id 运行查询和过滤时,它很慢, 但是当我按别名 id 过滤时,它很快.(看查询的结尾) 为什么过滤时使用相同的字段会导致不同的执行时间? 解释分析的链接: slow1、slow2 fast1、fast2 差异从#20 开始:使用不同索引的地方: 索引条件:(o.sys_period @> sys_time()) VS 索引条件:(o.a
..
我有一个重新调整复合结果的 SQL 函数. CREATE TYPE result_t AS (a int, b int, c int, d numeric);创建或替换函数 slow_function(int)返回 result_t作为 $$-- 只是一些占位符代码,让它变慢选择 0, 0, 0, (SELECT sum(ln(i::numeric))FROM generate_series(1
..
我重新编写了一个查询以减少选择记录所需的时间.但是我仍然看到需要在解码线中进行一些小的调整,因为成本很高.有人可以让我知道是否可以在没有解码功能的情况下重写相同的查询吗?删除 decode 函数的目的是使用 v_id 列中的索引. 到目前为止我所尝试的. 尝试创建函数索引(知道不能使用绑定变量)但失败了. 已尝试使用 OR 条件,但它不会选择索引.因此,任何建议都会有很大帮助.
..
我意识到不同的解决方案会对“工作日"的含义产生不同的影响,但就我而言,我指的是周一至周五. 基本上我已经创建了一个函数来为我进行计算并且我当前的解决方案有效.我的担忧(以及提出这个问题的原因)是我担心这是实现这一目标的糟糕方法,因为该函数的调用频率非常高.在过去 3 个月内,它在生产系统上被调用了 1200 万次,平均工作时间为 44 毫秒. 这让我怀疑这是否是实现解决方案的正确方法.
..
让我们使用以下脚本创建一个简单的表 order(id: int, category: int, order_date: int) IF OBJECT_ID('dbo.orders', 'U') IS NOT NULL DROP TABLE dbo.orders选择前 1000000NEWID() ID,ABS(CHECKSUM(NEWID())) % 100 类别,ABS(CHECKSUM(NE
..
我有几个关于 SQL 的问题.. 如何分析一个系统的性能询问?任何软件,内置MSSQL Server 2005/2008 的特点? 在查询中应该用什么代替in才能使性能更好?例如: 选择 *FROM enquiry_courses在哪里enquiry_id IN( SELECT enquiry_id FROM 查询 WHERE session_id = '4cd3420a16db
..
我对以下内容感到困惑.我有一个大约有 1000 万行的数据库,并且(在其他索引中)1 列 (campaignid_int) 是一个索引. 现在我有 70 万行,其中活动 ID 确实是 3835 对于所有这些行,connectionid 是相同的. 我只想找出这个 connectionid. 使用messages_db;SELECT TOP (1) connectionid从传
..
可能的重复: varchar(500) 比 varchar(8000) 有优势吗? 我知道包含 10 个字符的 VARCHAR(200) 列与包含相同数据的 VARCHAR(20) 列占用的空间量相同. 我想知道将特定表的十几个 VARCHAR(200) 列更改为 VARCHAR(20) 是否会使查询运行得更快,尤其是在以下情况下: 这些列包含的字符永远不会超过 20 个 这
..
我有以下疑问 第一个使用内连接 SELECT item_ID,item_Code,item_Name从 [药房].[tblitemHdr] 我INNER JOIN EMR.tblFavourites F ON I.item_ID=F.itemIDWHERE F.doctorID = @doctorId AND F.favType = 'I' 第二个使用子查询如 从 [Pharmacy]
..
有没有更好的方法来做这样的查询: SELECT COUNT(*)FROM (SELECT DISTINCT DocumentId, DocumentSessionIdFROM DocumentOutputItems) AS internalQuery 我需要计算此表中不同项目的数量,但不同项目超过两列. 我的查询工作正常,但我想知道是否可以仅使用一个查询(不使用子查询)获得最终结果
..
我有一个 SQL 查询,如下所示: 声明@ConnectionType int = 5,@UserId int = 2从 CallDetails 中选择 *其中 ((@ConnectionType = 0 AND CallDetails.DeviceType IN (0,1,2,3,4,5,7,8))或 (@ConnectionType = 1 AND CallDetails.DeviceTy
..
credit 表和 validtransaction 表有 2008 年以后的百万条记录数据. 我们正在进行迁移.所以我需要找出2017年(periodseq=1055)之后不再使用的credittypeids,这样就不需要迁移了. 这是查询,>= 部分导致了巨大的成本.请提出替代方案. SELECT CREDITTYPEID来自 CREDITTYPE ct不存在的地方(选择 1来自
..
我使用的是 Mysql 数据库. 我有一个存储有以下字段的股票价值表 daily_price_history.它有 1100 万+ 行 id符号名称符号标识体积高的低的打开约会时间关闭 因此对于每只股票 SymbolName 都有不同的每日股票价值.而且数据现在已经超过1100万行了, 下面的sql尝试获取一组1500个品种的最近100天的每日数据 SELECT `daily_p
..
我正在尝试按大表(近 18 000 行)中的几列搜索重复行.问题是查询需要很多时间,我试过这个: SELECT * FROM table_name a, table_name b哪里 a.col1 = b.col1AND a.col2 = b.col2AND a.col3 = b.col3AND a.col4 = b.col4和 a.id 出价 还有这个: SELECT *从表名哪里
..
我们将一个完整的数据库从 MySQL 5.1.63 迁移到另一个(更好一点)服务器到 MySQL 5.7.22.现在大多数查询平均慢了 2 倍.我们还没有对 MySQL 5.1 做太多优化. 这是我们更改的配置: table_open_cache = 4096tmp_table_size=256Mmax_heap_table_size=256Mquery_cache_limit = 100
..
我有一个表 (MySQL),其中有一列名为 binID.此列中的值范围为 1 到 70. 我想要做的是选择该列的唯一值(应该是从 1 到 70 的数字),然后使用每个值(我们称之为 theBinID)作为参数迭代它们到另一个 SELECT 语句中,例如: SELECT * FROM MyTable WHERE binID = theBinID ORDER BY createdDate DE
..
过去 6 个月以来,我在一个高流量网站上遇到了一个让我非常伤心的查询,我迫切需要帮助.我是一名前端开发人员,能够编写简单的 SQL 查询,因此我无法自己解决此问题.由于内存或 CPU 不足或 VPS 上其他查询的干扰,该查询现在经常锁定 mysql 数据库.我升级了硬件,但这并不能解决问题.因此,这里描述了查询尝试执行的操作: 用户访问特定 URL(例如 the_source_url).应用
..
如果我在 SQL Server 中做这样的事情... 选择 *来自 mytable其中 1=1 ...1=1 条件是否得到了优化,还是实际上对每一行都进行了评估? 我也有兴趣了解其他 DBMS 在这方面的表现,尤其是 MySQL. 解决方案 SQL Server: 第一个例子: 1=1 谓词被 SQL Server 查询优化器自动删除,因为它总是 true: 第
..
我想优化这个查询,因为它需要很长时间来执行几乎一秒钟 这是查询: IF 存在(从客户中选择 CustFirstName其中(客户名字 = 输入客户名字)或 (CustLastName= InputCustLastName)或(电子邮件 = 输入电子邮件)); 所有这三列都有唯一索引.我有 765704 条记录. 这是我查询的解释结果集: ----+-------------+--
..
对于相关的表和列(比下面的要多得多),我有一个 customer 表,其中包含 cust_id 和 state列和带有 account_id、cust_id 和 avail_balance 列的 account 表. 示例 customer 表: |cust_id |状态 ||--------:|-------||1 |硕士 ||2 |硕士 ||3 |硕士 ||4 |硕士 ||5 |新罕布
..