相关疑难解决方法(0)

哪个SQL查询更快?过滤加入条件或Where子句?

比较这两个查询.将过滤器放在连接条件或are子句中是否更快.我一直认为它在连接标准上更快,因为它在最快的时刻减少了结果集,但我不确定.

我将构建一些测试来查看,但我也希望得到关于哪个更清晰易读的意见.

查询1

SELECT      *
FROM        TableA a
INNER JOIN  TableXRef x
        ON  a.ID = x.TableAID
INNER JOIN  TableB b
        ON  x.TableBID = b.ID
WHERE       a.ID = 1            /* <-- Filter here? */
Run Code Online (Sandbox Code Playgroud)

查询2

SELECT      *
FROM        TableA a
INNER JOIN  TableXRef x
        ON  a.ID = x.TableAID
        AND a.ID = 1            /* <-- Or filter here? */
INNER JOIN  TableB b
        ON  x.TableBID = b.ID
Run Code Online (Sandbox Code Playgroud)

编辑

我运行了一些测试,结果显示它实际上非常接近,但该WHERE条款实际上稍快一点!=)

我绝对同意在WHERE条款上应用过滤器更有意义,我只是对性能影响感到好奇.

已确认的时间标准: 143016 ms
已安排时间加入标准: 143256 ms

测试

SET …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

83
推荐指数
3
解决办法
6万
查看次数

SQL左连接中"on ..和"与"on .. where"之间的区别?

Sql语句.

1.select a.* from A a left join B b on a.id =b.id and a.id=2;

2.select a.* from A a left join B b on a.id =b.id where a.id=2;
Run Code Online (Sandbox Code Playgroud)

这两个sql语句有什么区别?

sql syntax join where

24
推荐指数
2
解决办法
7956
查看次数

加入融合?

与WHERE子句相反,在连接中进行过滤是否有任何明显的性能参数?

例如,

SELECT blah FROM TableA a
INNER JOIN TableB b
ON b.id = a.id
AND b.deleted = 0
WHERE a.field = 5
Run Code Online (Sandbox Code Playgroud)

相反

SELECT blah FROM TableA a
INNER JOIN TableB b
ON b.id = a.id
WHERE a.field = 5
  AND b.deleted = 0
Run Code Online (Sandbox Code Playgroud)

我个人更喜欢后者,因为我觉得过滤应该在过滤部分(WHERE)中完成,但是有任何性能或其他原因要做任何一种方法吗?

sql-server inner-join

16
推荐指数
1
解决办法
3万
查看次数

SQL选择由外键链接的其他表中的条目

我重新设计了我的数据库结构,使用PRIMARY和FOREIGN KEY将我的3个表中的条目链接在一起,我在尝试编写查询以在另一个表中给定数据的一个表中选择数据时遇到问题.以下是我的3个CREATE TABLE语句的示例:

CREATE TABLE IF NOT EXISTS players (
    id INT(10) NOT NULL AUTO_INCREMENT,
    username VARCHAR(16) NOT NULL, 
    uuid VARCHAR(200) NOT NULL DEFAULT 0,
    joined TIMESTAMP DEFAULT 0,
    last_seen TIMESTAMP DEFAULT 0,
    PRIMARY KEY (id)
);

/*      ^
    One |
       To
        | One
        v
*/

CREATE TABLE IF NOT EXISTS accounts (
    id INT(10) NOT NULL AUTO_INCREMENT,
    account_id INT(10) NOT NULL,
    pass_hash VARCHAR(200) NOT NULL, 
    pass_salt VARCHAR(200) NOT NULL, 
    created BIGINT DEFAULT 0,
    last_log_on BIGINT DEFAULT 0,
    PRIMARY KEY …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

12
推荐指数
1
解决办法
3万
查看次数

如何选择两个表?

经过相当多的时间尝试和一些研究后,我终于投降并请求大家帮忙.这就是我的MySQL表格:

表格1:

Parent_ID | ID | Name | Quality |Price
1         | 001|Apple | good    |1.50
1         | 002|Apple | medium  |1.20
1         | 003|Apple | poor    |0.99
2         | 004|Car   | good    |5000.00
2         | 005|Car   | poor    |200.00

表2:

Parent_ID | Var_Name | Value
1         | color    |  red
1         | size     |  big
1         | rating   |  3 Star
2         | color    |  blue
2         | size     |  medium
2         | rating   |  ok

好的.太好了.我现在需要的是一个查询,它给了我:

Parent_ID | …

mysql sql

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

Sql Not IN使用Join查询

如何使用左连接在这里编写以下查询是我的示例查询

SELECT * 
FROM STUDENT st 
WHERE st.stdid not IN 
   (    SELECT csch.stid 
        FROM courseSchedule csch,    section sctn 
        WHERE cschno.sectno = sctn.sectno 
             AND cschno.college= sctn.college
             AND sctn.college = st.college AND sctn.year = 2013 and sctn.semester = 'spring' 
     )
     AND st.college = 1
Run Code Online (Sandbox Code Playgroud)

sql oracle

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

标签 统计

sql ×5

mysql ×2

sql-server ×2

database ×1

inner-join ×1

join ×1

oracle ×1

sql-server-2008 ×1

syntax ×1

t-sql ×1

where ×1