我有一个大约有17M行的MySQL表,在这个表中,我最终执行了大量聚合查询。
在本例中,假设我有index_on_b、index_on_c、compound_index_on_a_b、compound_index_on_a_c
我尝试运行一个查询解释
EXPLAIN SELECT SUM(revenue) FROM table WHERE a = some_value AND b = other_value
我发现选择的索引是index_on_b,但是当我使用查询提示时
SELECT SUM(revenue) FROM table USE INDEX(compound_index_on_a_b
我在mysql查询中遇到了问题。查询如下。
SELECT *
FROM group
WHERE (level IN (3,4,5,6) AND last_time BETWEEN 0 AND 3)
OR (level IN (4,5,6,7) AND last_time BETWEEN 0 AND 6);
我如何优化查询,也许可以删除OR单词。谢谢。
此外,查询还可以像下面这样进行扩展。
SELECT *
FROM group
WHERE (level IN (3,4,5,6) AND last_time BETWEEN 0 AND 3)
我有一个在(col1,col2,col3)上有唯一索引的表
我在这个表上有一个查询
...
left join my_table t on t.col1=x.col1 and t.col2=x.col2 and t.col3 in (1,2,3)
当col3的列表只有一项时,explain会显示一个eq_ref join
+----+-------------+----------+------------+--------+---------------+-----+---------+---------------------+------+----------+-------+
| id
下面的查询平均每分钟大约有1000个查询。大多数查询将保持不变的日期,小时,分钟和itemName的变化(2021-06-02,10,30和“足球”在本例中)。我已经更换了不同的部件,这似乎是性能最好的顺序。我怀疑使用不同函数的查询可能更适合性能,但我还没有弄清楚其中一个。
SELECT DatetimeRecorded, itemName, field1, field2, field3
FROM StoreData.data
WHERE DatetimeRecorded BETWEEN '2021-06-02' - INTERVAL 30 DAY
我有一个非常简单的表和一个查询,我想知道是否可以以某种方式进行优化?在寻找查询优化时,是否有比EXPLAIN语句更好的方法呢?
它现在只有1500行,但是它的意图是拥有更多的行(可能超过50万或100万行)。
查询:
SELECT id, SUM( ABS(weight)) AS sumWeight FROM myTable GROUP BY id ORDER BY sumWeight ASC LIMIT 1
表结构
Field Type Null Key Default Extra
id mediumint(8) unsign
如何在SQL中优化此代码
INSERT INTO #ActivePlayers ([PlayerId])
SELECT DISTINCT([OwnerSID]) [PlayerId]
FROM [WarehouseMgmt].[FactLoginTrans] FLT
JOIN [WarehouseMgmt].[DimPlayer] DP ON DP.[Id] = FLT.[OwnerSID]
WHERE [IsSystemUser]=0
AND [OwnerSID]>0
我有一个用户模型
class User < ActiveRecord::Base
has_many :watched_videos
has_and_belongs_to :course
end
和一个课程模型
class Course < ActiveRecord::Base
has_many :videos
has_and_belongs_to :users
end
和一个视频模型
class Video < ActiveRecord::Base
belongs_to :course
has_many :watched_videos
试图了解SQL Server内存优化表(内存中的oltp)上事务隔离级别的工作方式。
如果我执行以下查询:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
BEGIN TRANSACTION
SELECT *
FROM tm.Tasks
显示一条错误消息:
仅对于自动提交事务,才支持使用读提交隔离级别访问内存优化表。它不支持显式或隐式事务。使用表提示(如WITH (快照))为内存优化表提供受支持的隔离级别。
现在,如果我通过添加表提示来修改查询,它可以工作:
SET TRANSACTION ISOLATION LEVEL READ CO
嗨,伙计们,我有以下查询,我试图用linq将它写到sql中:
Select * from PlazaI pi
join (
Select * from PlazaE pe where
NOT EXISTS(SELECT 1 FROM PlazaE pe1
WHERE pe.Id_plaza = pe1.Id_plaza AND pe1.Fecha > pe.Fecha AND pe1.Fecha < GETDATE() and pe1.Id_Emp != 0)
) pe on pe.Id_plaza = pieepo.Id_plaza
join Emp
我有一个标量函数,如下所示:
CREATE FUNCTION my_scalar_function
()
RETURNS uniqueidentifier
BEGIN
RETURN '<GUID>'
END
我还有一个视图定义(带有一堆联接),它调用这个标量函数。以下是它的代表:
CREATE VIEW my_view AS
SELECT Id, Col1, Col2, Col3
FROM my_table
WHERE Id = my_scalar_function()
我不能将标量函数更改为TVF或其他任何东西,而且它包含的GUID
我想删除数据库中的2组数据,使用EF Core。
所有密码都是假设的。
数据模型:
class Parent
{
public int Id { get; set; }
}
class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
public virtual Parent Parent { get; set; }
public bool Flag { get; set; }
}
让我们假设我希望删除(ParentId=100)和(flag=false)
我在mysql数据库中有一个表,很快就会有大量的记录,所以我想添加一些索引来提高我的查询性能。我的查询有4个字段,( template_id (int ),data(text),state(int),hub_id(int) )。并且这4个字段都不是我的表的主键字段。在对此表的查询中,我有以下3种where子句:
where state = XXX
where template_id = XXX AND state = YYYY
where hub_id = XXX AND data = 'YYYY' AND template_id = ZZZZ
这个表有4列,其中where子句
我试图加快get请求对Django的响应时间。延迟是由于经过过滤的查询集上的迭代造成的。
stop_time_next_hour = StopTime.objects.filter(
stop_id=stop_id,
# Get all arrival times in the next hour
arrival_time__gte=current_time.time(),
arrival_time__lte=(current_time + timedelta(hours=1)).time(),
)
这是必须迭代的查询集,
我有两个表,比如说employees和order,这两个表都有数百万条记录。
Select orders.*
from orders
INNER JOIN employees
on Employees.id = orders.employeeid
WHERE orders.type='daily'
and orders.date > Employees.registerDate
and orders.date < Employees.regiserDate + Interval 60 Days
以上查询为粗略查询,可能存在语法错误,但
我偶然发现了最近这个问题,在网上找不到任何关于它的讨论。
下面的查询
DECLARE @S VARCHAR(1) = '';
WITH T
AS (SELECT name + @S AS name2,
*
FROM master..spt_values)
SELECT *
FROM T T1
INNER JOIN T T2
ON T1.name2 = T2.name2;
总是得到嵌套循环计划。
📷
试图强制INNER HASH JOIN或INNER MERGE JOIN提示出现
我正在编写一个用于嵌入式Objective-C数据库的小型SQLite库。
我使用的SQLite版本是3.7.13 (用SELECT sqlite_version()检查)
我的问题是:
SELECT ROUND(AVG(difference), 5) as distance
FROM (
SELECT (
SELECT A.timestamp - B.timestamp
FROM ExampleTable as B
WHERE B.timestamp = (
SELECT MAX(timestamp)
FROM ExampleTab
让我描述一下用例的抽象,这样问题的意图就会清楚了。
用例:
(i). If there is already an object objA of type A, create another obj2A of type
A.
(ii).If there are more than one object of type A, create an object objB of type
B.
我只想使用Drools来检查工作内存中的匹配,所以只使用查询部分。对象创建部分不受Drools控制。我只问流口水哪一个(i)或(ii)匹配(或两者),然后决定做什么。
因此,首先我创建