|
|
1
4
我会这样重写它,并确保你有一个索引
根据您使用的数据库,可能发生的情况是来自
|
|
|
2
3
由于这是一个非常基本的查询,优化器应该可以很好地处理它,所以您的问题可能是索引不正确。您在“In-U-Date”字段和“Invoice-ITEMS.II”Innum字段上有索引吗?如果正确设置了pk-fk关系,则invoices.innum应该已经被索引,但fk不会自动被索引。 |
|
|
3
2
您的查询很好,这是您必须查看的索引。
是
如果不是,SQL必须做一个叫做“扫描”的事情——它搜索每一条记录。 你可以把索引想象成电话簿边上的标签——你知道从哪里开始根据姓氏的第一个字母来寻找人。如果没有索引(比如你想查找以“…儿子”结尾的名字),你就必须搜索整本书。 有不同类型的索引——它们可以排序(如电话簿索引——都按姓氏排序)或不排序(如书后的索引——在查找索引和实际页面时会产生开销)。 您还应该能够查看查询计划—这是服务器执行SQL语句的方式。这可以告诉您各种更高级的东西——例如,有多种方法来完成这项工作:如果两个表都按联接字段排序,则合并联接是可能的,或者嵌套联接将为较大表中的每个记录循环通过较小的表。 |
|
|
4
1
好吧,没有理由这个查询速度慢…唯一需要考虑的是,您在invoices.innum=invoice_items.ii_innum上有索引吗?如果添加它们,可以加快选择速度,但会减慢更新/插入速度… |
|
|
5
1
联接不会在任何东西上创建“虚拟表”,而不仅仅是概念级别。 查询的性能问题很可能是索引不好或索引不足。您应该对以下内容进行索引:
你也应该有一个索引
另外,不要在这里使用左联接。如果在
|
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |