问题标签 [query-optimization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - 如何过滤大于数值的nvarchar?
我有一个带有 BigMacs nvarchar(255) 列的 MS SQL 表 McTable。我想获得 BigMacs 值大于 5 的行。
我要做的是:
结果我得到一个错误:
将 nvarchar 值“***”转换为数据类型 int 时,状态 1,第 67 行转换失败。
但是当我删除最后一个过滤器where Cast(table.BigMacsL as int) > 5
时,它可以工作,我得到了这个结果:
当我将第一个查询“select * from”更改为“select top 18 * from”时,我也没有收到错误!
我不知道是什么问题以及如何使它工作!请你帮助我好吗?
再一次:我在这里尝试完成的是让这些具有 BigMacs 值大于 5 的 McTable 行。
更新
重现此错误的步骤:
我已经准备好查询,因此您可以轻松地在数据库上收到此错误:
创建数据库TestDB,创建表:
插入值:
这个查询:
产生有效数字,如下所示:
54543534
54534534
454
当您尝试使用此查询获取过滤值时:
你应该得到这个不应该发生的错误:
消息 245,级别 16,状态 1,行 1 将 nvarchar 值“fd”转换为数据类型 int 时转换失败。
database - 在 MVC 模型中什么是有效的数据访问的良好平衡?
我正在处理一些使用 MVC 框架的 PHP 项目,虽然它们都有不同的方式从数据库中检索对象,但就速度和减少数量而言,似乎没有什么比手动编写 SQL 查询更好的了。查询。
例如,我的一个 Web 项目(由初级开发人员编写)执行 100 多个查询只是为了加载主页。原因是在一个地方,一个方法会加载一个对象,但稍后在代码的更深处,它会加载与第一个对象相关的一些其他对象。
这导致了问题的另一部分,即人们在您有一个表的情况下在做什么,该表在代码的一部分中只需要几列的值,而另一部分需要其他东西?现在(在同一个项目中),每个对象都有一个 get() 方法,它执行“SELECT *”(或显式列出表中的所有列),因此无论何时您出于任何原因需要该对象,你得到了整个事情。
所以,换句话说,你听到了所有关于 SELECT * 不好的讨论,但是如果你尝试使用框架附带的 ORM 类,它通常会这样做。您是否坚持选择使用 SELECT * 的 ORM 与手动编写特定的 SQL 查询?在我看来,我们陷入了便利和效率之间,如果我手写查询,如果我添加一列,我很可能不得不将它添加到代码中的几个位置。
很抱歉这个问题很长,但我正在解释背景以从其他开发人员那里获得一些心态,而不是具体的解决方案。我知道我们总是可以使用像 Memcached 这样的东西,但我宁愿在开始之前优化我们可以做的事情。
感谢您的任何想法。
sql - 对于大桌子,有什么比“计数”更快的吗?
这是我的查询:
表 sentenceword 包含 3 个字段,wordid、sentenceid 和一个主键 id。它有 350k+ 行。这个查询需要高达 85 秒,我想知道(希望,祈祷?)有一种更快的方法可以找到所有超过 100 个句子的 wordid。
我试过取出选择计数部分,只是做'有计数(1)',但都没有加快速度。
我将不胜感激您可以提供的任何帮助。谢谢!
sql-server - 用于 Oracle 开发人员/dba 的 SQL 服务器
我有几年使用 oracle 开发的经验,现在已经搬到他们使用 SQL Server (2005) 的地方。对于有我背景的人来说,哪里是学习 SQL Server 查询优化、基本 dba 内容和 sql server gotchas 之类的好地方。
谢谢!
sql - SQL 查询帮助:选择当月的随机员工
谁能告诉我如何从这个声明中获取记录
- 选择最近 x 个月内不是当月员工的随机员工
表员工
ID
EmployeeName
表 EmployeeOfTheMonth
ID
EmployeeID
MonthStartedDate
MonthEndedDate
非常感谢
sql - 什么是 MySQL 索引表?
我需要加快查询速度。我要找的是索引表吗?如果是这样,我该怎么做?我必须在每次插入时更新它吗?
以下是表模式:
和查询:
sql - MySQL MyISAM 表的性能......非常缓慢,非常缓慢
我有一个表结构,可以总结如下:
有 3600 行
参考页组;有 10000 行;每个页面组可以有 1-700 行之间的任何内容;数据列的类型为 mediumtext,该列每行包含 100k - 200kbytes 数据
参考页面;大约有 300,000 行;每页可以有大约 1-50 行
上面的结构非常简单,问题是从用户数据到页面组的连接非常非常慢,即使我已经索引了所有应该索引的列。为此类联接(userdata inner_join page inner_join pagegroup)运行查询所需的时间超过 3 分钟。考虑到我根本没有选择数据列这一事实,这非常慢。查询时间过长的示例:
请帮助解释为什么需要这么长时间以及我能做些什么来使它更快。
编辑#1
解释以下乱码返回:
编辑#2
故事的道德启示
如果遇到诸如此类的性能问题,请将中/长文本列保留在单独的表中。
sql - MySQL MyISAM 表性能问题重温
这个问题与这个有关。
我有一个具有以下结构的页表:
数据列包含每条记录大小约为 80KB - 200KB 的文本。数据列中存储的数据总大小约为 1.5GB。
执行此查询需要0.08秒:
但执行此查询大约需要130.0秒:
如您所见,我在 page.pageid 上有一个主索引,在 page.sourceid 上有一个索引。那么第二个查询应该花那么长时间吗?
编辑#1
解释返回
很抱歉,分析不起作用... MySQL(其 4.1.22)无法识别 SHOW PROFILE 查询。
显示索引返回
sql - SQL(任何)请求了解查询优化
由于大量信息被连接在一起,我的查询特别慢。但是,我需要以 id in 的形式添加 where 子句(从表中选择 id)。
我想知道以下是否有任何收获,更紧迫的是,它是否会给出预期的结果。
作为替代方案:
更新:MySQL 不能更具体,抱歉表 a 实际上是 7 个不同表之间的连接。* 用于示例
编辑,b 没有被选中
mysql - 为什么 MySQL 中的 UNION 查询这么慢?
当我优化我的 2 个单个查询以在 0.02 秒内运行,然后UNION
它们生成的查询需要超过 1 秒才能运行。此外, aUNION ALL
比 a 花费更长的时间UNION DISTINCT
。
我假设允许重复会使查询运行得更快而不是更慢。我真的最好分开运行这两个查询吗?我更喜欢使用UNION
.
作为一个简单的例子,如果我这样做
需要 0.001 秒
如果我这样做
它需要 0.1 秒。
如果我再跑
它需要超过 1 秒。