大约6个月前,我们将一个大型.NET项目从server 2000升级到了2012年。(我知道已经有两个版本了,别让我开始!)
其中一个存储过程在通宵批处理过程中运行了一个查询,自升级后花费了55分钟,但上周却跳到了3个小时。但是,在升级之前,查询花费了1分钟。我按照执行计划在表上添加了一个索引,使运行时间缩短到10分钟。我不是一个DBA,所以我想知道是否有人能解释这是为什么,因为这对我来说没有意义。
这是引起问题的查询:
DELETE @ExcludedPersons
FROM @ExcludedPersons
WHERE personID NOT IN (SELECT personID
我有MySQL数据库:
CREATE TABLE IF NOT EXISTS `tableexample` (
`id` int(11) NOT NULL auto_increment,
`val0` tinyint(1) NOT NULL,
`val1` tinyint(1) NOT NULL,
`val2` tinyint(1) NOT NULL,
`val3` tinyint(1) NOT NULL,
`val4` tinyint(1) NOT NULL,
`val5` tinyint(1) NOT NULL,
......
因此,正如标题所示,我需要一个查询来查找包含数据库中大多数行的表。
我可以使用以下查询显示我的所有表:
select * from sys.tables
或者:
select *
from sysobjects
where xtype = 'U'
order by name
以及使用此查询的所有索引:
select *
from sys.indexes
但是,如何显示整个数据库中大多数行的列?
你好,克里斯
假设我们有大量SQL查询,这些查询需要很长时间才能运行。现在,我们希望对数据库进行一些更改并重新执行查询。我们可以重新运行所有内容,但我更喜欢只执行那些受更改影响的查询的解决方案。您是否知道获取每个查询的相关表/列的方法?一个简单的例子是:
(让我们考虑这个表:包含列:A;B;C的TABLE1 )
SELECT C FROM TABLE1 WHERE B>10;
我想知道TABLE1.B是否参与了这个查询。
编辑:数据库是HSQLDB,通过JDBC从Java使用。
假设我的站点中有一个用户表,其中大约有2-3百万用户(记录)在表中。
为了加快我的登录过程,这是一个很好的方法来分割我的用户表,一个用于他们的信息,一个用于他们的登录。
如果我们可以从一个表中运行与下面的查询类似的查询:
select username,password from users where username=`test` AND password=****
是否有必要分割它,这是否加快了我的网站的登录过程?
我在我的web服务器上运行下面的MySQL查询,数据库位于一个单独的服务器上:
$sql="select * from call_history where extension_number = '0536*500' and flow = 'in' and DATE(initiated) = '".date("Y-m-d")."' ";
$rs=mysql_query($sql,$pbx01_conn);
echo mysql_num_rows($rs).' Calls IN';
c
在查询数据库的时候,由于数据量大,我要做分页,然后首先获取总的条数,但是使用sql语句SELECT COUNT(*) as total from 表 WHERE addtime between 1164038401 and 1511235339;这条sql等于遍历了全表,数据有一百万条,id为主键索引,addtime为普通索引。现在问题是一使用这条语句内存使用量就从一开始的30%多直接上升到90%多,怎么解决这个内存问题?
我现在只是查询个数,但是分页的时候会查询有条件的大量数据,对于内存过大,有什么好的解决办法?比如sql不使用缓存,修改配置文件等等。
以下查询对两个表进行操作:dev_Profile和dev_User。
SELECT
dev_Profile.ID AS pid,
Name AS username,
st1.online
FROM
dev_Profile
LEFT JOIN (
SELECT
dev_User.ID,
lastActivityTime /* DATETIME */
FROM
dev_User)
AS st1 ON st1.ID = dev_Profile.UserID;
每个表中大约有11K行,该查询大约需要6秒才能完成。我对数
使用SQL server 2000和Access 2003
Access Database Name - History.mdb
Access Table Name - Events
SQL Database Name - Star.mdf
SQL Table Name - Person
我想从person表中获取字段,并使用内部连接将其包含在Events表中
已尝试的查询
Select * from Events inner join person where events.id = person.id
那么如何对access和sql数据库进行查询。
我只想在access中执行Selec
我需要一些关于如何最好地解决这个问题的建议。我继承了一个从现有SQL server数据库构建报告实用程序的项目。该数据库包含一个“原始数据”表,其中每个生产数据点都被转储。报告需要提供几个数据列的平均值和Cpk。
“原始数据”表包含25列,包括ID列、LotID列和TimeStamp列,以及包含度量数据的5列。总的来说,该表似乎有20+百万条记录,基本上是一个巨大的平面文件。
我需要做的是提供两种搜索方法:按日期范围和按批次ID。一个批次ID可以保存多达200万条记录。
我首先开发了一个使用简单SELECT查询的C#应用程序。
SELECT *
FROM tblRawData
WHERE
我尝试执行以下查询:
update ms
set user_B_total_duration = amc.total_duration
from monthly_statistics ms
inner join aggregate_monthly_conversations amc
on ms.user_B = amc.user_B
但是查询已经执行了超过10个小时。每个表(monthly_statistics和aggregate_monthly_conversations)中大约有23M条记录。数据库引擎是SQL Server2008,
涉及多个条件的SQL select查询的时间复杂度是多少?
SELECT *
FROM products
WHERE price > 100
AND width > 100
AND rating > 100
例如,数据库引擎(InnoDB)是如何使用价格、宽度和等级索引来处理这个查询的?
发动机会先处理价格,然后按宽度和等级过滤结果吗?它意味着首先O(log(n)+k)与k(产品表中的结果数和条目数),然后是O(n),然后O(n),n是最后一次过滤操作的结果数?
我在MySQL 8中有一个SQL查询,用于获取列中的最新日期,以及表中所有记录的计数:
SELECT max(ModificationTimestamp) as lastUpdate, count(*) as total FROM mls_data;
表中大约有300万行,执行该查询几乎需要30秒。
如何使这个查询执行得更快?索引?配置设置?增加InnoDB缓冲区?