Что быстрее, ВЫБЕРИТЕ ОТЛИЧНЫЙ или GROUP BY в MySQL?

Добавьте немного CSS, чтобы скрыть форму входа.

$('.message a').click(
  function() {
    $('form').animate({height: "toggle", opacity: "toggle"}, "slow");
  }
 );
.login-form {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="login-page">
    <div class="form">
        <form class="register-form">
            <input type="text" placeholder="login"/>
            <input type="password" placeholder="password"/>
            <input type="text" placeholder="e-mail"/>
            <button>create</button>
            <p class="message">Already have an account? <a href="#">Sign in!</a></p>
        </form>
        <form class="login-form">
            <input type="text" placeholder="login"/>
                <input type="password" placeholder="password"/>
                <button>Sign in</button>
                <p class="message">Need an account? <a href="#">Register!</a></p>
        </form>
    </div>
</div>

269
задан Muntasir 29 May 2017 в 20:42
поделиться

6 ответов

Они чрезвычайно эквивалентны друг другу (на самом деле, это - то, как некоторые базы данных реализуют DISTINCT под капотом).

, Если один из них быстрее, это будет DISTINCT. Это вызвано тем, что, хотя эти два являются тем же, оптимизатор запросов должен был бы поймать то, которое Ваш GROUP BY не использует в своих интересах элементов группы, просто их ключи. DISTINCT делает это явным, таким образом, можно сойти с рук немного более немой оптимизатор.

, Когда в сомнении, тесте!

248
ответ дан guest 23 November 2019 в 02:21
поделиться

ВЫБЕРИТЕ ОТЛИЧНЫЙ, всегда будет то же, или быстрее, чем GROUP BY. В некоторых системах (т.е. Oracle), это могло бы быть оптимизировано для совпадения с ОТЛИЧНЫЙ для большинства запросов. На других (таких как SQL Server), это может быть значительно быстрее.

0
ответ дан Beep beep 23 November 2019 в 02:21
поделиться

Если Вы не должны делать никаких функций группы (сумма, среднее число и т.д. в случае, если Вы хотите добавить числовые данные к таблице), используйте ОТЛИЧНЫЙ ВЫБОР. Я подозреваю, что это быстрее, но у меня нет ничего для показа для него.

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

0
ответ дан tehvan 23 November 2019 в 02:21
поделиться

Кажется, что запросы не являются точно тем же. По крайней мере, для MySQL.

Сравните:

  1. описывают избранный отличный productname от northwind.products
  2. , описывают выбор productname от northwind.products группы productname

, который второй запрос дает дополнительно "Используя filesort" в Дополнительном.

5
ответ дан amartynov 23 November 2019 в 02:21
поделиться

Пойдите для самого простого и самого короткого, если Вы можете - ОТЛИЧНЫЙ, казаться, быть больше, что Вы ищете только потому, что это даст Вам ТОЧНО ответ, в котором Вы нуждаетесь и только это!

17
ответ дан Lenin Raj Rajasekaran 23 November 2019 в 02:21
поделиться

Если у Вас есть индекс на profession, эти два являются синонимами.

, Если Вы не делаете, затем используйте DISTINCT.

GROUP BY в MySQL результаты видов. Можно даже сделать:

SELECT u.profession FROM users u GROUP BY u.profession DESC

и отсортировали Ваши профессии в DESC порядок.

DISTINCT составляет временную таблицу и использует его для хранения дубликатов. GROUP BY делает то же, но сортирует отличные результаты впоследствии.

Так

SELECT DISTINCT u.profession FROM users u

быстрее, если у Вас нет индекса на profession.

98
ответ дан Quassnoi 23 November 2019 в 02:21
поделиться
Другие вопросы по тегам:

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