我想知道使用表变量是否比使用内连接(select)更多或更少的性能
示例:
DECLARE @tab TABLE(Id int)
INSERT INTO @tab
SELECT Id
FROM SomeTable
WHERE SomeDate = "10 DAYS AGO"
SELECT *
FROM SomeOtherTable
INNER JOIN @tab t
ON SomeOtherTable.id = t.id
--VERSUS--
SELECT *
FROM SomeOtherTable
INNER JOIN (SELECT Id FROM SomeTable WHERE SomeDate = "10 DAYS AGO") t
ON SomeOtherTable.id = t.id
Run Code Online (Sandbox Code Playgroud)
对于大型查询,如果您必须多次进行相同的连接,则第一个更易于维护,但性能最高的是什么?
问候
我有一个拥有500万行的网站和数据库,它的工作就像一个魅力.但是,我每小时运行一次清理cronjob,将旧数据放入"日志"表并删除旧数据,此时服务器响应非常慢.是否有可能通过PHP或MySQL将该工作降低?
任何人都可以给我很好的教程链接,这将对我有所帮助,所以我可以检查如何将Solr搜索与我的Drupal站点集成以获得良好的性能.
有哪些模块可用于Drupal 7.x版本的Apache Solr Search.哪个版本的Solr将支持Drupal 7.x. Apache Solr/Drupal 7.x要搜索的配置是什么?
提前致谢.
鉴于MySQL中的这个SQL查询:
SELECT * FROM tableA WHERE tableA.id IN (SELECT id FROM tableB);
Run Code Online (Sandbox Code Playgroud)
MySQL是否SELECT id FROM tableB为每一行执行多次子查询tableA?
有没有办法让sql更快,而不使用变量或存储过程?
为什么这通常比使用慢LEFT JOIN?
我有两个嵌套游标的功能.外部光标从源获取客户的付款详细信息,并根据某些业务逻辑插入到目标中.内部光标接受每笔付款的付款细节,它一个接一个地发生.
付款表有大约125000行,大约335000行用于付款详细信息.所有这些行都将迁移到目标表.执行该功能需要两个多小时,数据库CPU使用率高达99%.
我正在使用PostgreSQL 9.2.
如何提高功能的性能?
我正在使用的代码:
CREATE OR REPLACE FUNCTION ccdb_dummy.o_payments1(a integer)
RETURNS void AS
$BODY$
DECLARE
cursor_1 refcursor;
cursor_2 refcursor;
rowcount integer;
rowcount1 integer;
payment_no bigint;
query_1 character varying(250);
lc_cin_num bigint;
test character varying(50);
t_payments ccdb_stg.o_payments_stg%ROWTYPE;
t_payments_details ccdb_stg.o_payment_head_dtls_stg%ROWTYPE;
BEGIN
rowcount := 0;
open cursor_1 for select * from ccdb_stg.o_payments_stg WHERE section_code = a;
select count(1) into rowcount from ccdb_stg.o_payments_stg WHERE section_code = a;
for i IN 1..rowcount loop
fetch cursor_1 into t_payments;
payment_no= nextval('ccdb_stg.payments_seq');
select cin into lc_cin_num from …Run Code Online (Sandbox Code Playgroud) 我正在考虑增加表格中某个列的大小,以便它可以容纳更长的值.但是这张桌子INSERT每天都经历沉重的s,我想知道增加尺寸是否会影响我的INSERT(和BULK INSERT)速度.
那么在a VARCHAR(50)和a VARCHAR(2000)列中插入值的执行时间是否存在差异?
是否有可能在1个语句中写这个(只进行1个db调用?)并且仍能区分"成员不存在"和"成员确实存在但没有狗".
public IEnumerable<Dog> GetDogsOfMember(int id)
{
if (dbContext.Members.Any(i => i.ID == id))
{
return dbContext.Dogs.Where(i => i.Member.ID == id);
}
return null;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用peewee对sqlite数据库进行大规模批量插入.我正在使用,atomic但性能仍然很糟糕.我在〜2500行的块中插入行,由于SQL_MAX_VARIABLE_NUMBER,我一次插入大约200行.这是代码:
with helper.db.atomic():
for i in range(0,len(expression_samples),step):
gtd.GeneExpressionRead.insert_many(expression_samples[i:i+step]).execute()
Run Code Online (Sandbox Code Playgroud)
列表expression_samples是一个字典列表,其中包含GeneExpressionRead模型的相应字段.我已经定时了这个循环,执行时需要2-8秒.我有数百万行要插入,现在我编写代码的方式可能需要2天才能完成.根据这篇文章,我设置了几个pragma以提高性能.对于我来说,这也没有真正改变任何表现.最后,根据peewee github页面上的这个测试,应该可以非常快地插入很多行(在0.3364秒内大约50,000个),但似乎作者使用原始的sql代码来获得这种性能.有没有人能够使用peewee方法做这么高性能的插入?
编辑:没有意识到peewee的github页面上的测试是针对MySQL插入的.可能适用于或不适用于这种情况.
我在我的应用程序中使用SQL Azure SQL Server.我的应用程序所在的数据库层一直运行到最近,avg DTU的使用受到控制.但是在高峰时段,DTU的峰值持续达到100%.升级到下一层是一个选项,但首先我想弄清楚哪个查询对此负责.这可以在Azure中找到,哪个查询使DTU跳转到100%?
sql-server performance azure database-performance azure-sql-database
我的PHP Web应用程序中的所有MySQL表都是具有utf8编码的MyISAM。由于可以在离线状态下通过配套应用生成记录,因此我的表键是随机生成的字母数字VARCHAR;这些字段使用utf8_bin编码设置为二进制,因此它们区分大小写。
我最近决定更改我所有文本字段的编码,以支持某些用户喜欢输入的表情符号。我继续将所有utf8字段更改为utf8mb4,包括密钥。我立即开始发现性能问题,其中对一个较大的表进行复杂的SELECT查询要花费一分钟多的时间,然后其他查询排队等待表锁。我将该表上的主键字段的编码改回了utf8,性能恢复了正常。几天后,我再次将该字段更改为utf8mb4,查询再次开始排队,然后将其更改为恢复正常性能。
因此,运行顺利:
`ID` varchar(8) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
Run Code Online (Sandbox Code Playgroud)
但这会导致问题:
`ID` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT ''
Run Code Online (Sandbox Code Playgroud)
我读过的所有内容都说utf8和utf8mb4应该具有同等的性能,但是我发现我的情况有明显的不同。这有意义吗?
将关键字段保留在utf8并不是一个真正的问题,因为我预见在那里不会再使用简单的字母数字字符。但是我希望将所有字段都设置为相同的编码,只是为了保持一致和简化维护(不必记住将用户填充的字段设置为一种编码,而将关键字段设置为另一种编码)。
关于@MandyShaw的评论
当我使用Sequel Pro Mac应用程序处理数据库时,控制台会不断显示成对的SET NAMES 'utf8'和SET NAMES 'utf8mb4'条目,因此这表明并非所有设置都正确。但是,这是我目前所拥有的:
MySQL [(none)]> SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary …Run Code Online (Sandbox Code Playgroud)