НЕ В ПРОТИВ НЕ СУЩЕСТВУЕТ

os.path.realpath(path)

os.path.realpath возвращает канонический путь указанного имени файла, исключая любые символические ссылки, встречающиеся в пути.

486
задан reto 22 November 2012 в 10:52
поделиться

5 ответов

Если планировщик выполнения говорит, что они - то же, они - то же. Используйте, какой бы ни каждый сделает Ваше намерение более очевидным - в этом случае, второе.

23
ответ дан John Millikin 22 November 2012 в 10:52
поделиться
  • 1
    @nikic: Это было неправильно в моем первом представлении, но я исправил его. Попробовать еще раз. – Ira Baxter 29 April 2011 в 17:09

На самом деле я полагаю, что это было бы самым быстрым:

SELECT ProductID, ProductName 
    FROM Northwind..Products p  
          outer join Northwind..[Order Details] od on p.ProductId = od.ProductId)
WHERE od.ProductId is null
14
ответ дан James Curran 22 November 2012 в 10:52
поделиться
  • 1
    Хорошо, спасибо за Вашу IRA справки:) Мне удалось реализовать симпатичный принтер (потребовалось некоторое время для избавлений от многих многих ошибок пограничного случая). Хотя это doesn' t сохраняют любой пробел или информацию о комментарии. Я полагал, что это будет к трудному для реализации. Можно найти получающийся пакет в GitHub: github.com/nikic/PHP-Parser :) Еще раз спасибо! – NikiC 4 June 2011 в 14:00

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

NOT IN должен быть предпочтен, если Вы тестируете несколько строк в своем внешнем выборе. Подзапрос в NOT IN оператор может быть оценен в начале выполнения, и временная таблица может быть проверена по каждому значению во внешнем выборе, вместо того, чтобы повторно выполнить подвыбор каждый раз, как требовался бы с NOT EXISTS оператор.

, Если подзапрос должен коррелироваться с внешним выбором, то NOT EXISTS может быть предпочтительным, так как оптимизатор может обнаружить упрощение, которое предотвращает создание любых временных таблиц для выполнения той же функции.

7
ответ дан Monic 22 November 2012 в 10:52
поделиться

Это зависит..

SELECT x.col
FROM big_table x
WHERE x.key IN( SELECT key FROM really_big_table );

не было бы относительно медленным не очень для ограничения размера того, в чем проверке запроса видеть, вводят ли они, находится. СУЩЕСТВУЕТ было бы предпочтительно в этом случае.

, Но, в зависимости от оптимизатора DBMS, это могло не отличаться.

, Поскольку пример того, когда СУЩЕСТВУЕТ, лучше

SELECT x.col
FROM big_table x
WHERE EXISTS( SELECT key FROM really_big_table WHERE key = x.key);
  AND id = very_limiting_criteria
-2
ответ дан Greg Ogle 22 November 2012 в 10:52
поделиться
  • 1
    Это не ориентированный на многопотоковое исполнение indded, как Schilmeijer отмечает. I' ve отправил поток, сохраняют ответ ниже. – Zaar Hai 26 June 2013 в 16:08

Если оптимизатор говорит, что они - то же, тогда рассматривают человеческий фактор. Я предпочитаю видеть НЕ, СУЩЕСТВУЕТ:)

1
ответ дан onedaywhen 22 November 2012 в 10:52
поделиться
  • 1
    @Schildmeijer, можно ли уточнить, почему и как он может повредиться? Спасибо! – Zaar Hai 10 June 2013 в 11:13
Другие вопросы по тегам:

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