标签: query-performance

Postgres - 创建表非常慢 - 带有分区和 BRIN 索引

我有一张包含超过 2.6 亿条记录的表。我已经为表创建了分区并对其进行了索引。

CREATE TABLE qt_al_90k
(
    rec_id integer,
    user_id integer,
    user_text text,
    user_number double precision,
    user_date date,
    user_seq integer,
    my_sequence integer
) PARTITION BY RANGE (rec_id);
Run Code Online (Sandbox Code Playgroud)

分区查询:

CREATE TABLE qt_al_90k_rec_id_1 PARTITION OF qt_al_90k FOR VALUES FROM (0) TO (100000);
CREATE TABLE qt_al_90k_rec_id_2 PARTITION OF qt_al_90k FOR VALUES FROM (100000) TO (200000);
CREATE TABLE qt_al_90k_rec_id_3 PARTITION OF qt_al_90k FOR VALUES FROM (200000) TO (300000);
CREATE TABLE qt_al_90k_rec_id_4 PARTITION OF qt_al_90k FOR VALUES FROM (300000) TO (400000);
CREATE TABLE qt_al_90k_rec_id_5 PARTITION …
Run Code Online (Sandbox Code Playgroud)

sql postgresql query-performance

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

Mysql Bulk更新性能改进(当...案例时)

我有这样的查询,应该在每个MySQL操作后执行.此查询现在正在减慢页面加载速度,因为数据增加了,我做了所有事情,如正确的索引,但查询仍然相对较慢.

有没有其他方法来执行这些检查?

$query = "
UPDATE {$tprefix}wh_profg 
   SET status =
       CASE 
       WHEN 
          batchno in (
            select 
                batchno 
            from 
                {$tprefix}wh_profulldetail 
            where 
                remainingdays <= 0
          )
       THEN 
          'expired'

       WHEN 
          QC = 'rejected' and QA != 'rejected' 
            and status != 'expired' 
       THEN 
          'QC-rejected'

       WHEN 
          QA = 'rejected' and QC != 'rejected' 
            and status != 'expired' 
       THEN 
          'QA-rejected'

       WHEN 
          QA = 'rejected' and QC = 'rejected' 
            and status != 'expired' 
       THEN 
          'QA&QC-rejected'

       WHEN 
          (
            batchno in (
            select 
                batchno 
            from 
                {$tprefix}wh_profulldetail 
            where 
                available <= …
Run Code Online (Sandbox Code Playgroud)

mysql sql database-performance query-performance

6
推荐指数
1
解决办法
428
查看次数

如何在 MySQL 中完全 OUTER JOIN 多个表

我需要FULL OUTER JOIN多个表。我知道如何FULL OUTER JOIN这里到两张桌子。但是我有几张表,我无法将其应用于它们。我怎样才能实现它?
我的SQL代码如下:

INSERT INTO table
(
  customer_id
 ,g01
 ,g02
 ,g03
 ,has_card
 ,activity
  )
  SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity
  FROM s_geo_data sgd
  LEFT JOIN s_category sc
  ON sc.customer_id = sgd.customer_id
    UNION
  SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity
  FROM s_geo_data sgd
  RIGHT JOIN s_category sc
  ON sc.customer_id = sgd.customer_id

    UNION

  SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity
  FROM s_geo_data sgd
  LEFT JOIN s_activity a
  ON a.customer_id = sgd.customer_id
    UNION
  SELECT sgd.customer_id, sgd.g01,sgd.g02,sgd.g03,sc.value, a.activity
  FROM s_geo_data sgd …
Run Code Online (Sandbox Code Playgroud)

mysql join outer-join query-performance

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

需要调整此SQL查询以提高性能

我有以下查询.由于其中的子查询,这会降低性能.我尝试了很多来添加Join而不是Subquery.但是徒劳无功 任何人都可以告诉我如何使用JOIN重写此查询?

update Table_1
set status = 'Status_2' 
where status ='status_1' and (col_1, col_2, col_3, nvl(col_4,0), col_5) in ( 
               select col_1, col_2, col_3, nvl(col_4,0), col_5 from Table_2 where status ='Status_0');
Run Code Online (Sandbox Code Playgroud)

请看SELECT * FROM table(DBMS_XPLAN.Display);下面的内容

Plan hash value: 1290346170
------------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name                 | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT              |                      |     1 |   376 |   456   (3)| 00:00:06 |
|   1 |  UPDATE                       | Table_1              |       | …
Run Code Online (Sandbox Code Playgroud)

sql database oracle query-performance sql-tuning

6
推荐指数
1
解决办法
140
查看次数

Oracle SQL查询效率提升

我有一个永远不会完成的查询(剩下运行超过24小时但仍在继续).

现在每个表中没有大量数据,所以我只能假设它是我编写的查询的效率.

SELECT DISTINCT s.supplier_id 
FROM supplier_info s
INNER JOIN purchase_order_line_all po ON s.supplier_id = po.vendor_no
INNER JOIN purchase_req_line_all pr ON s.supplier_id = pr.vendor_no
INNER JOIN man_supp_invoice m ON s.supplier_id = m.IDENTITY
WHERE s.creation_date >= TRUNC(SYSDATE) - INTERVAL '6' MONTH    
OR po.state NOT IN ('Closed', 'Cancelled')
OR pr.state NOT IN ('PO Created', 'Cancelled')
OR m.invoice_date >= TRUNC(SYSDATE) - INTERVAL '18' MONTH   
Run Code Online (Sandbox Code Playgroud)

执行计划

Plan hash value: 2195330353

-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name                      | Rows  | Bytes |TempSpc| Cost (%CPU)| …
Run Code Online (Sandbox Code Playgroud)

sql oracle query-performance

6
推荐指数
1
解决办法
125
查看次数

Cassandra Query 执行时间分析

我是 Cassandra CQL 的新手,我想获得 Cassandra 查询执行时间。我可以在 CQL shell 中通过将当前时间存储在变量中来执行查询,然后将当前时间存储在另一个变量中,并通过计算两个变量的差异来计算实际执行时间。谁能指导我。

java cql cassandra query-performance cqlsh

6
推荐指数
1
解决办法
5772
查看次数

SQL Azure 上的 VarBinary(max) 更新速度非常慢

我们将一些文档存储在 SQL Server 数据库VarBinary(Max)列中。大多数文档只有几 KB,但有时可能有几 MB。

当文件大于 4MB 左右时,我们会遇到问题。

VarBinary在本地 SQL Server 中更新列时,速度非常快(8MB 文件只需 0.6 秒)。

在 SQL Azure 上的相同数据库上执行相同的语句时,需要超过 15 秒!

此外,如果代码从 Azure 应用服务运行,速度会非常慢。所以问题不是我们的互联网连接。

我知道在 SQL Server 中存储文件不是首选的存储方式,Blob 存储通常是最佳解决方案,但我们有特殊原因需要这样做,所以我想将其排除在讨论之外;-)

在调查执行计划时,我看到“Table Spool”一直在占用时间,但我不确定为什么。以下是本地和 Azure 的执行计划。

相同的数据库和数据。如果有人可以提供帮助,那就太好了。

谢谢克里斯

在 Prem SQL 上执行

在 SQL Azure 上执行

t-sql sql-server query-performance azure-sql-database azure-sql-server

6
推荐指数
1
解决办法
1390
查看次数

BEFORE 触发器和 ON UPDATE CURRENT_TIMESTAMP 之间的性能差异 - MySQL

因此,我和我的朋友正在争论是否使用 BEFORE Trigger 或 ON UPDATE CURRENT_TIMESTAMP 来更新表的列值updated_at。顾名思义,该列的用途只是存储行更新的最后时间。

他已经为相同的事件设置了触发器-BEFORE

  BEGIN
       set NEW.updated_at := current_timestamp();
  END
Run Code Online (Sandbox Code Playgroud)

我认为我们应该使用 ON UPDATE CURRENT_TIMESTAMP 属性,因为这是 MySQL 为相同的事件提供的默认触发器AFTER

我尝试在文档中搜索性能差异,但一无所获。有什么帮助吗?

mysql datetime query-performance

6
推荐指数
1
解决办法
665
查看次数

在 nvarchar(max) 列上创建索引

我的表包含三列。如果我NVARCHAR(MAX)在 select 语句中选择列,我会发现性能很差。是否可以在列上创建索引NVARCHAR(MAX)

CREATE TABLE TEST
(
     id primary key,
     product VARCHAR(50),
     Title NVARCHAR(max)
)

INSERTING MILLIONS OF RECORDS....

SELECT product, Title 
FROM TEST
Run Code Online (Sandbox Code Playgroud)

该表包含数百万条记录。如何为该列创建索引?它真的能提高我的 select 语句的性能吗?或者有其他方法可以改善这个问题吗?

nvarchar query-performance sql-server-2012

6
推荐指数
1
解决办法
9331
查看次数

分析和改进 Django ORM (SORT) 生成的查询的性能

我有一个不太复杂的(imho)过滤逻辑,基于我的 Django 模型中的几个条件。有一个特定的查询需要通常的时间才能完成。

该查询是基于这两个查询集构建的:

queryset = self.serializer_class.Meta.model.valid_pricelist_objects.filter(
    Q(drug_prices__pricelist__price_destination__to_all_insurances=True
      ) |
    # pylint: disable=line-too-long
    Q(
        drug_prices__pricelist__price_destination__to_organization_data__organization__uuid
        =self.kwargs.get('i_uuid')))
return queryset

Run Code Online (Sandbox Code Playgroud)

return super().get_queryset().filter(
    Q(active=True),
    Q(drug_prices__pricelist__active=True), # Lista de precios activa
    # Q(drug_pictures__is_main=True), # Que tenga una imagen
    # TODO: Hacer filtros por pais PriceListCountries
    Q(
        Q(drug_prices__pricelist__expires=False) | # Que tenga precios que no caducan o
        Q(
            Q(drug_prices__pricelist__expires=True), # Que tenga precios que si caducan Y
            Q(drug_prices__pricelist__datestart__date__lte=timezone.now()),  # Fecha de inicio menor que hoy Y
            Q(drug_prices__pricelist__dateend__date__gte=timezone.now())  # Fecha final mayor que hoy
        ) …
Run Code Online (Sandbox Code Playgroud)

python django orm query-performance postgresql-performance

6
推荐指数
1
解决办法
1439
查看次数