相关疑难解决方法(0)

使用SELECT TOP x的SQL大量性能差异,即使x远高于所选行

我正在从表值函数中选择一些行,但是通过将SELECT TOP放在查询中,发现了一个莫名其妙的巨大性能差异.

SELECT   col1, col2, col3 etc
FROM     dbo.some_table_function
WHERE    col1 = @parameter
--ORDER BY col1
Run Code Online (Sandbox Code Playgroud)

需要花费5到6分钟才能完成.

然而

SELECT   TOP 6000 col1, col2, col3 etc
FROM     dbo.some_table_function
WHERE    col1 = @parameter
--ORDER BY col1
Run Code Online (Sandbox Code Playgroud)

在大约4或5秒内完成.

如果返回的数据集很大,这不会让我感到惊讶,但涉及的特定查询返回 200,000中的~5000行.

因此,在这两种情况下,整个表都被处理,因为SQL Server一直在搜索6000行,它将永远不会到达.为什么那么巨大的差异呢?这是否与SQL Server在预期结果集大小时分配空间的方式有关(TOP 6000因此给它一个较低的要求,更容易在内存中分配)?有没有其他人目睹过这样的事情?

谢谢

sql t-sql sql-server performance user-defined-functions

15
推荐指数
2
解决办法
3万
查看次数

在"UNION"上应用"ORDER BY"(Mysql)

美好的一天.所以,每个标志都在标题:)

我希望合并两个请求的结果并将结果排序在一起(因为不是一个接一个).=>我正在考虑应用一个联合并订购它们.它没用.

我在这里看了一下Stack或者这里的developpez(!!法国网站).我尝试了不同的例子和建议,但没有成功.从我的红色看来,这是因为我正在研究Mysql.

无论如何,这是我的尝试,结果:

我原来的2个要求

SELECT * FROM user_relation WHERE from_user_id = 1
List item
SELECT * FROM user_relation WHERE to_user_id = 1
Run Code Online (Sandbox Code Playgroud)

这个列表的结果由teh frist select(由索引键编排)的结果组成,后面是由Index KEy排序的第二个选择的结果.

尝试1:

(SELECT * FROM user_relation WHERE from_user_id = 1 ORDER BY trust_degree)
UNION
(SELECT * FROM user_relation WHERE to_user_id = 1 ORDER BY trust_degree)
Run Code Online (Sandbox Code Playgroud)

请求已运行,但结果与原始请求相同:首先选择的结果(按索引键排序),然后是第二个请求的结果

尝试2:

(SELECT * FROM user_relation WHERE from_user_id = 1 ORDER BY trust_degree)
UNION
(SELECT * FROM user_relation WHERE to_user_id = 1 ORDER BY trust_degree) …
Run Code Online (Sandbox Code Playgroud)

mysql union sql-order-by

11
推荐指数
2
解决办法
1万
查看次数

带有大小写的案例的SQL请求"(1)第一个ORDER BY术语与结果集中的任何列都不匹配"

我有一个SQL游标的小问题.我正在尝试在android上执行SQL命令.我试图按案例排序返回的内容,但似乎系统不接受返回的值(?!)我已经尝试了一切!你有解决方案吗?;)

cursor = db.rawQuery(c, null);
String c = "SELECT * FROM characters WHERE UPPER(descriptions) LIKE '%" + 
    TextUtils.join("%", arr) + "%' UNION ALL SELECT * FROM words WHERE
    UPPER(descriptions) LIKE '%" + TextUtils.join("%", arr) + "%'
    ORDER BY CASE WHEN UPPER(descriptions) LIKE '" + s + "' THEN 1
    WHEN UPPER(descriptions) LIKE '" + s + "|%' THEN 2 WHEN
    UPPER(descriptions) LIKE '%|" + s + "|%' THEN 2 WHEN UPPER(descriptions)
    LIKE '%|" + s + "' THEN 2 WHEN …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android

7
推荐指数
1
解决办法
2384
查看次数

如何为Union结果添加订单?

在SQL Server 2008中,我们可以使用Union/Unino All将两个结果放在一起,但我想为最终结果添加order by.怎么办?

我想要的是:

select id1 as id, * from ...
Union All
select id2 as id, * from ...
order by id
Run Code Online (Sandbox Code Playgroud)

请帮忙.谢谢.

sql-server sql-server-2008

4
推荐指数
1
解决办法
1万
查看次数

SQL:如何按字母顺序排序联合?

这是一个有点奇怪的用例,但是如何按字母顺序排序这样的简单联合的结果?

select name 
from Reviewer
union
select model
from Car; 
Run Code Online (Sandbox Code Playgroud)

sql

0
推荐指数
1
解决办法
660
查看次数