Nano Hash - криптовалюты, майнинг, программирование

Производительность SQL-сервера?

Я соединил две таблицы, каждая из которых содержит более 5000 записей. Я использовал два метода для присоединения. В первом запросе я использовал ключевое слово JOIN и дал условие в состоянии ON. Во втором запросе я просто использовал оператор запятой между таблицами и дал условие соединения в предложении WHERE.

Какой из них будет эффективным по времени и стоимости ....?

Когда я смотрю на план выполнения, первый запрос занял 61% стоимости для сканирования таблицы и 38% для HASH MATCH (INNER JOIN)

Второй запрос потребовал 69 % стоимости для TABLE SCAN и 31 % для HASH MATCH (INNER JOIN).

Можете ли вы объяснить мне эту разницу?

Я предполагаю, что первый эффективен, потому что стоимость сканирования таблицы меньше. Это правильно...?

10.09.2009

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

Ответы:


1

Мне кажется, что план запроса был одинаковым в обоих случаях... так как у вас было сканирование таблицы и совпадение хеша оба раза...

Прежде чем вы попытаетесь сравнить эти проценты... позвольте мне проиллюстрировать опасность с помощью этого вопроса:

что больше

61% of 465

или

69% of 234

??

В этом случае вы можете увидеть, что 69% от 234 будет намного «быстрее», чем 61% для 465. Все это относительно общей стоимости запроса.

Будьте осторожны, просто сравнивая проценты, потому что вы не знаете, каково фактическое значение, которое соответствует 100% в обоих случаях... например. ОБЩАЯ стоимость выполнения могла бы быть ниже во втором случае.

10.09.2009

2

TABLE SCAN означает, что он должен прочитать каждую строку в таблице. Обычно с планами выполнения вы пытаетесь избавиться от сканирования таблицы, используя индексы и т. д., где это возможно. Сканирование таблиц обычно является основной причиной медленных запросов. (по моему опыту)

Процентное уменьшение является улучшением только в том случае, если общее время, необходимое для выполнения SQL, уменьшается по сравнению с тем, что было раньше.

Например, если первый запрос с немного уменьшенным TABLE SCAN занял 20 секунд вместо 10, то это не так эффективно.

Конечно, если вы хотите оптимизировать свой запрос, существует целый ряд методов, которые вы можете применить, чтобы попытаться улучшить его. (Мастер настройки индексов, создание индексов (кластеризованных/некластеризованных), просмотр плана выполнения — выявление потенциальных узких мест и т. д.)

SQL-оптимизация сама по себе является искусством

10.09.2009

3

Дайте определение «эффективный». Если ваша цель — скорость, выберите «показать статистику клиента», запустите оба запроса не менее дюжины раз (конечно, в разных окнах запросов) и оцените результаты.

10.09.2009

4

эти два метода логически эквивалентны, но могут иметь совершенно разные показатели производительности в зависимости от того, как синтаксический анализатор планирует запрос. При выборе между методами вам необходимо учитывать два ключевых фактора:

  1. Какая версия создает план запроса, который лучше оптимизирован.

  2. Что более удобно в сопровождении, если позже потребуется модифицировать код, чтобы включить больше объединенных (INNER или OUTER) таблиц.

Предложение INNER JOIN vs WHERE

10.09.2009
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..