问题标签 [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.

0 投票
9 回答
8351 浏览

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 时转换失败。

0 投票
4 回答
316 浏览

database - 在 MVC 模型中什么是有效的数据访问的良好平衡?

我正在处理一些使用 MVC 框架的 PHP 项目,虽然它们都有不同的方式从数据库中检索对象,但就速度和减少数量而言,似乎没有什么比手动编写 SQL 查询更好的了。查询。

例如,我的一个 Web 项目(由初级开发人员编写)执行 100 多个查询只是为了加载主页。原因是在一个地方,一个方法会加载一个对象,但稍后在代码的更深处,它会加载与第一个对象相关的一些其他对象。

这导致了问题的另一部分,即人们在您有一个表的情况下在做什么,该表在代码的一部分中只需要几列的值,而另一部分需要其他东西?现在(在同一个项目中),每个对象都有一个 get() 方法,它执行“SELECT *”(或显式列出表中的所有列),因此无论何时您出于任何原因需要该对象,你得到了整个事情。

所以,换句话说,你听到了所有关于 SELECT * 不好的讨论,但是如果你尝试使用框架附带的 ORM 类,它通常会这样做。您是否坚持选择使用 SELECT * 的 ORM 与手动编写特定的 SQL 查询?在我看来,我们陷入了便利和效率之间,如果我手写查询,如果我添加一列,我很可能不得不将它添加到代码中的几个位置。

很抱歉这个问题很长,但我正在解释背景以从其他开发人员那里获得一些心态,而不是具体的解决方案。我知道我们总是可以使用像 Memcached 这样的东西,但我宁愿在开始之前优化我们可以做的事情。

感谢您的任何想法。

0 投票
5 回答
3214 浏览

sql - 对于大桌子,有什么比“计数”更快的吗?

这是我的查询:

表 sentenceword 包含 3 个字段,wordid、sentenceid 和一个主键 id。它有 350k+ 行。这个查询需要高达 85 秒,我想知道(希望,祈祷?)有一种更快的方法可以找到所有超过 100 个句子的 wordid。

我试过取出选择计数部分,只是做'有计数(1)',但都没有加快速度。

我将不胜感激您可以提供的任何帮助。谢谢!

0 投票
2 回答
410 浏览

sql-server - 用于 Oracle 开发人员/dba 的 SQL 服务器

我有几年使用 oracle 开发的经验,现在已经搬到他们使用 SQL Server (2005) 的地方。对于有我背景的人来说,哪里是学习 SQL Server 查询优化、基本 dba 内容和 sql server gotchas 之类的好地方。

谢谢!

0 投票
2 回答
722 浏览

sql - SQL 查询帮助:选择当月的随机员工

谁能告诉我如何从这个声明中获取记录

  • 选择最近 x 个月内不是当月员工的随机员工

表员工
ID
EmployeeName

表 EmployeeOfTheMonth
ID
EmployeeID
MonthStartedDate
MonthEndedDate

非常感谢

0 投票
1 回答
3100 浏览

sql - 什么是 MySQL 索引表?

我需要加快查询速度。我要找的是索引表吗?如果是这样,我该怎么做?我必须在每次插入时更新它吗?

以下是表模式:

和查询:

0 投票
6 回答
6001 浏览

sql - MySQL MyISAM 表的性能......非常缓慢,非常缓慢

我有一个表结构,可以总结如下:

有 3600 行

参考页组;有 10000 行;每个页面组可以有 1-700 行之间的任何内容;数据列的类型为 mediumtext,该列每行包含 100k - 200kbytes 数据

参考页面;大约有 300,000 行;每页可以有大约 1-50 行

上面的结构非常简单,问题是从用户数据到页面组的连接非常非常慢,即使我已经索引了所有应该索引的列。为此类联接(userdata inner_join page inner_join pagegroup)运行查询所需的时间超过 3 分钟。考虑到我根本没有选择数据列这一事实,这非常慢。查询时间过长的示例:

请帮助解释为什么需要这么长时间以及我能做些什么来使它更快。

编辑#1

解释以下乱码返回:

编辑#2

故事的道德启示

如果遇到诸如此类的性能问题,请将中/长文本列保留在单独的表中。

0 投票
3 回答
811 浏览

sql - MySQL MyISAM 表性能问题重温

这个问题与这个有关。

我有一个具有以下结构的页表:

数据列包含每条记录大小约为 80KB - 200KB 的文本。数据列中存储的数据总大小约为 1.5GB。

执行此查询需要0.08秒:

但执行此查询大约需要130.0秒:

如您所见,我在 page.pageid 上有一个主索引,在 page.sourceid 上有一个索引。那么第二个查询应该花那么长时间吗?

编辑#1

解释返回

很抱歉,分析不起作用... MySQL(其 4.1.22)无法识别 SHOW PROFILE 查询。

显示索引返回

0 投票
7 回答
194 浏览

sql - SQL(任何)请求了解查询优化

由于大量信息被连接在一起,我的查询特别慢。但是,我需要以 id in 的形式添加 where 子句(从表中选择 id)。

我想知道以下是否有任何收获,更紧迫的是,它是否会给出预期的结果。

作为替代方案:

更新:MySQL 不能更具体,抱歉表 a 实际上是 7 个不同表之间的连接。* 用于示例

编辑,b 没有被选中

0 投票
5 回答
16441 浏览

mysql - 为什么 MySQL 中的 UNION 查询这么慢?

当我优化我的 2 个单个查询以在 0.02 秒内运行,然后UNION它们生成的查询需要超过 1 秒才能运行。此外, aUNION ALL比 a 花费更长的时间UNION DISTINCT

我假设允许重复会使查询运行得更快而不是更慢。我真的最好分开运行这两个查询吗?我更喜欢使用UNION.

作为一个简单的例子,如果我这样做

需要 0.001 秒

如果我这样做

它需要 0.1 秒。

如果我再跑

它需要超过 1 秒。