Порядок SQL операций

Если Вы хотите получить доступ к элементу, просто присвоить ему идентификатор и использовать getElementById:

console.log(document.getElementById("textBox"));
<textarea id="textBox"></textarea>

, Если Вы хотите получить доступ к его значению, используйте .value:

console.log(document.getElementById("textBox").value);
<textarea id="textBox">This is some text!</textarea>
10
задан shA.t 10 June 2015 в 11:46
поделиться

7 ответов

Это зависит от базы данных.

На SQL Server запустите: SET SHOWPLAN_ALL ON , затем запустите запрос, вы получите представление о том, что происходит при его выполнении .

9
ответ дан 3 December 2019 в 16:10
поделиться

Семантически: после JOIN. Но в этом случае нет никакой разницы во времени, потому что он находится на ЛЕВОЙ стороне JOIN.

Как вы уже знаете, «только строки в A из« Вчера »присоединяются к B».

оптимизатор может реорганизовать свой порядок операций в зависимости от эквивалентностей в реляционной алгебре.

Это возвращает только A.date = "Yesterday" и присоединяется к B, где он может найти совпадение с foo:

SELECT * FROM A
LEFT JOIN B
    ON A.foo=B.foo
WHERE A.date="Yesterday"

Это возвращает все A независимо от каких-либо критериев и присоединяется к B, где A.date = "Yesterday" И он находит совпадение на foo:

SELECT * FROM A
LEFT JOIN B
    ON A.foo=B.foo
    AND A.date="Yesterday"
6
ответ дан 3 December 2019 в 16:10
поделиться

Ваше представление об «оценке» неверно, поскольку SQL - это декларативный язык.

Кстати, вы можете увидеть план выполнения запроса. В MySQL префикс вашего запроса с ключевым словом описывает , чтобы увидеть план выполнения.

7
ответ дан 3 December 2019 в 16:10
поделиться

Порядок операций для удовлетворения запроса определяется, почему прихоть оптимизатор запросов конкретной базы данных. Оптимизатор запросов пытается создать хороший «план запроса» (набор операций) на основе того, что он может почерпнуть из запроса, и любой имеющейся у него статистики о базе данных (которая может включать количество таблиц и определенные распределения данных) .

В вашем случае ответ может зависеть от того, есть ли у вас вторичный индекс на A.date

Оптимизация запросов - довольно обширная тема. В документации к любой базе данных, которую вы используете, можно многое рассказать об этом.

2
ответ дан 3 December 2019 в 16:10
поделиться

Зависит от индексов и статистики.

Вы должны показать путь выполнения запроса, чтобы определить, где (если есть) следует применить оптимизацию.

1
ответ дан 3 December 2019 в 16:10
поделиться

в SQL Server:

Как правило, предложения JOIN оцениваются перед предложениями WHERE.

В случае сложных объединений, требующих фильтров в части соединения, я пишу их вместе с моим соединением

SELECT *
FROM A
LEFT JOIN B
    ON A.Foo1 = B.Foo1
    And A.Date = 'Yesterday'
OUTER JOIN C
    ON B.Foo2 = C.Foo2
JOIN D
    ON B.Foo3 = D.Foo3
1
ответ дан 3 December 2019 в 16:10
поделиться
SELECT * 
FROM (SELECT * FROM A WHERE Date = 'Yesterday') A
LEFT JOIN B 
    ON A.Foo1 = B.Foo1 
OUTER JOIN C 
    ON B.Foo2 = C.Foo2 
JOIN D 
    ON B.Foo3 = D.Foo3 
0
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: