我正在从表值函数中选择一些行,但是通过将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因此给它一个较低的要求,更容易在内存中分配)?有没有其他人目睹过这样的事情?
谢谢
美好的一天.所以,每个标志都在标题:)
我希望合并两个请求的结果并将结果排序在一起(因为不是一个接一个).=>我正在考虑应用一个联合并订购它们.它没用.
我在这里看了一下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) 我有一个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 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)
请帮忙.谢谢.
这是一个有点奇怪的用例,但是如何按字母顺序排序这样的简单联合的结果?
select name
from Reviewer
union
select model
from Car;
Run Code Online (Sandbox Code Playgroud) sql ×3
sql-server ×2
android ×1
mysql ×1
performance ×1
sql-order-by ×1
sqlite ×1
t-sql ×1
union ×1