标签: query-optimization

这个查询可以改进吗?

请看下面的SQL代码.

DECLARE @RET TABLE(OID BIGINT NOT NULL,rowid bigint identity);
DECLARE @ResultTbl TABLE(OID BIGINT,sOID BIGINT,partkey bigint);

DECLARE @PATOID as VARCHAR(4000)

SET @PATIENTOID= '95,96,192,253,110,201,201,83,87,88,208,208,208,208'
INSERT INTO @RET SELECT OID FROM dbo.FGETBIGINTLIST(@PATOID )


DECLARE @NoOfRows bigint
DECLARE @InOID bigint
select @NoOfRows =  max(rowid) from @RET

while (@NoOfRows >=1)
begin
     select @InOID = oid from @RET where rowid=@NoOfRows
    insert into @ResultTbl 
            select * from fresolve_11(@InOID)
    set @NoOfRows = @NoOfRows - 1

end

SELECT * FROM @RET 
SELECT * FROM @ResultTbl 
Run Code Online (Sandbox Code Playgroud)

函数FGETBIGINTLIST接受逗号分隔值作为参数,并以表格格式返回值..就像

OID …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005 query-optimization

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

select*from tablename和selectname column1,column2 from tablename之间是否存在性能差异?

可能重复:
选择*vs指定列名
哪个更快/更好?SELECT*或SELECT column1,colum2,column3等.

有没有之间的性能差异select * from tablenameselect column1, column2 from tablename

如果是select * from,数据库会提取超过2个字段/列的所有字段/列.那么第一个查询会花费更多的时间/资源吗?

mysql sql query-optimization

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

如何用 JOIN 替换 NOT EXISTS 嵌套选择

您好,我在尝试优化在嵌套 SELECT 上具有 NOT EXISTS 子句的查询时遇到了困难。我一直在重写包含嵌套选择的查询,将它们更改为连接,但在这种情况下,我不确定如何将其与 NOT EXISTS 子句结合起来。我有以下查询:

SELECT `reg_no`, COUNT(*) AS `records_found` 
FROM (`club_records` AS `cr`) 
WHERE NOT EXISTS ( 
  SELECT `number` FROM `members` WHERE `members`.`number` = `cr`.`alt_reg_no` 
)
Run Code Online (Sandbox Code Playgroud)

mysql query-optimization

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

为什么这个MySQL查询会减慢我的代码速度

目前我在PHP中运行MySQL查询,在查看结果时我更新了原始表,但是一个包含500行的简单表需要30秒才能完成:

$sqlquery = mysql_query('SELECT id, special_data FROM stats_visits WHERE processed = 0');
while($row = mysql_fetch_assoc($sqlquery)){ 
    $stat_id = $row['id'];
    // Make use of special_data field for some operations
    mysql_query('UPDATE stats_visits SET processed = 1 WHERE id = ' . $stat_id);
}
Run Code Online (Sandbox Code Playgroud)

是因为我正在更新我选择的表吗?我通过执行以下操作解决了这个问题,但由于该表可能在将来有数千条记录,我不确定IN将如何保持:

$statids = array();

$sqlquery = mysql_query('SELECT id, special_data FROM stats_visits WHERE processed = 0');
while($row = mysql_fetch_assoc($sqlquery)){ 
    $statids[] = $row['id'];
    // Make use of special_data field for some operations
}

mysql_query('UPDATE stats_visits SET processed = 1 WHERE id IN(' …
Run Code Online (Sandbox Code Playgroud)

php mysql query-optimization

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

是否可以优化我的查询?

(你可以在这里理解更好的阅读)

我想知道是否有可能优化此查询:

SELECT id_type, value FROM Action, Action_set WHERE id_action = id_action_p1 AND id_action_set = 1
UNION ALL
SELECT id_type, value FROM Action, Action_set WHERE id_action = id_action_p2 AND id_action_set = 1
UNION ALL
SELECT id_type, value FROM Action, Action_set WHERE id_action = id_action_p3 AND id_action_set = 1
UNION ALL
SELECT id_type, value FROM Action, Action_set WHERE id_action = id_action_p4 AND id_action_set = 1
UNION ALL
SELECT id_type, value FROM Action, Action_set WHERE id_action = id_action_p5 AND id_action_set …
Run Code Online (Sandbox Code Playgroud)

mysql sql query-optimization

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

SQL Server查询优化 - WHERE子句与SELECT子查询

创建连接2个表的查询时.我想到了两种可能的方法来编写查询.下面是一个简化的例子.你能告诉我哪个会更快吗?

SELECT t1.a,
       t2.a
FROM   table1 t1
       JOIN table2 t2
         ON t1.b = t2.b
WHERE  t2.c = 'test' 
Run Code Online (Sandbox Code Playgroud)

要么

SELECT t1.a,
       t2.a
FROM   table1 t1
       JOIN (SELECT a, b
             FROM   table2
             WHERE  c = 'test') t2
         ON t1.b = t2.b 
Run Code Online (Sandbox Code Playgroud)

sql-server query-optimization

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

PHP循环记录非常慢

我正在使用PDO.所以我有一个声明,准备一个查询来选择一堆记录.例:

   //select duplicates
   $stmt = $this->db->prepare('SELECT Name COUNT( * ) AS CNT
            FROM  `Test`
            GROUP BY Name
            HAVING CNT > 1');

   $stmt2 = $this->db->prepare('SELECT * FROM Test2 WHERE TName = ?');
Run Code Online (Sandbox Code Playgroud)

请注意,我确实需要选择所有数据,而不是某些列.该表包含5k记录,有时甚至更多.我需要选择所有5k记录,对于每个记录,我需要执行另一个查询来选择其他内容.

   $arr = array();
   while ($row = $stmt->fetch(DB::FETCH_ASSOC)) {
       $stmt2->execute($row['Name']);
       $arr[] = $stmt2->fetchAll(DB::FETCH_ASSOC);
   }
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用连接但是对于我的情况连接将不起作用,因为我需要遍历数据并为每个stmt1行执行stmt2.

当我运行它需要10-15分钟,我不能允许,我需要它更快.谁能告诉我这是什么问题?5k记录似乎没有多少循环.

      STMT1 returns up to 5.5k records
Run Code Online (Sandbox Code Playgroud)

我需要返回每个副本的数据:

php mysql pdo loops query-optimization

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

如何在mongo中优化按日期查询查找

我有一个包含 0.6 百万个文档的集合。大多数文件的结构如下,

{
    "_id" : ObjectId("53d86ef920ba274d5e4c8683"),
    "checksum" : "2856caa9490e5c92aedde91330964488",
    "content" : "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"bn-bd\" lang=\"bn-bd\" dir=\"ltr\" " />\n  <link rel=\"stylesheet\" href=\"/templates/beez_20/css/position.css\" type=\"text/css\" media=\"screen,projection\ef=\"/index.php/bn/contact-bangla/2013-0</body>\r\n</html>",
    "date" : ISODate("2014-07-29T15:57:11.886Z"),
    "filtered_content" : "",
    "indexed" : true,
    "category": 'raw',
    "link_extracted" : 1,
    "parsed" : true,
    "title" : "Constituency 249_10th_En",
    "url" : "http://www.somesite.com.bd/index.php/bn/bangla/2014-03-23-11-45-04?layout=edit&id=2143"
}
Run Code Online (Sandbox Code Playgroud)

所有文档都带有日期属性。现在,当我编写下面的查询时,我得到了无限期的延迟时间来显示结果。

from pymongo import Connection
import datetime

con = Connection()
db = con.spider
pages = db.pages

today = datetime.datetime.combine( datetime.date.today(), datetime.datetime.min.time() ) …
Run Code Online (Sandbox Code Playgroud)

python query-optimization mongodb nosql pymongo

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

优化按连接表中的字段对结果进行分组的查询

我有一个非常简单的查询,它必须按连接表中的字段对结果进行分组:

SELECT SQL_NO_CACHE p.name, COUNT(1) FROM ycs_sales s
INNER JOIN ycs_products p ON s.id = p.sales_id 
WHERE s.dtm BETWEEN '2018-02-16 00:00:00' AND  '2018-02-22 23:59:59'
GROUP BY p.name
Run Code Online (Sandbox Code Playgroud)

表 ycs_products 实际上是 sales_products,列出了每个销售中的产品。我想查看一段时间内每种产品的销售份额。

当前的查询速度是 2 秒,这对于用户交互来说太多了。我需要让这个查询快速运行。有没有办法摆脱Using temporary不规范化?

连接顺序至关重要,两个表中都有大量数据,按日期限制记录数是毋庸置疑的先决条件。

这是解释结果

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: s
         type: range
possible_keys: PRIMARY,dtm
          key: dtm
      key_len: 6
          ref: NULL
         rows: 1164728
        Extra: Using where; Using index; Using temporary; Using filesort
*************************** 2. row ***************************
           id: 1
  select_type: SIMPLE
        table: p …
Run Code Online (Sandbox Code Playgroud)

mysql sql join group-by query-optimization

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

Mysql ONLY_FULL_GROUP_BY 模式问题 - 为每个相册选择单个图像 URL(任意)

我需要有关 mysql 查询的帮助,以下是详细信息:

三张表,相册_大师,相册_照片_地图,照片_详细信息

相册_主表结构

album_id(P) | album_name | user_id(F)
1               abc           1
2               xyz           1
3               pqr           1
4               e3e           2
Run Code Online (Sandbox Code Playgroud)

相册_照片_地图表结构

auto_id(P) | album_id(F) | photo_id
1             1              123
2             1              124
3             2              123 
4             2              125
5             1              127
6             3              127
Run Code Online (Sandbox Code Playgroud)

Photo_Details 表结构

auto_id(P) | image_id(F) | image_url
1               123          http....
2               124          http....
3               125          http...
Run Code Online (Sandbox Code Playgroud)

我想编写一个查询来获取带有 user_id 1 的图像 url 的专辑名称 我在这里期望的输出是

album_id | album_name | image_url
1            abc          http.. (either 123 or …
Run Code Online (Sandbox Code Playgroud)

mysql database query-optimization

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