Почему mysql игнорирует 'очевидный' ключ для использования в этом простом запросе соединения?

Если вы хотите перенести форму Spring 4 на 5 и начать использовать такие функции, как Spring Webflux, в основном вам придется переписать большую часть кода.

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

Вам также придется изменить все ваши интерфейсы, которые возвращают один объект, с MyCustomClass на Mono и с Collection на Flux. Ваши БД могут быть не реляционными, так как все существующие драйверы блокируются. Чтобы получить максимум WebFlux, вам нужно использовать Реактивные базы данных.

Вообще говоря, вам лучше переписать приложение, чем перейти на WebFlux.

Вам действительно нужно мигрировать? Вы сталкиваетесь с проблемами производительности? Вы можете рассмотреть возможность создания новых приложений в WebFlux, если у текущих нет проблем.

Взгляните на эту статью Джоша Лонга. Возможно, вам вообще не нужен WebFlux.

Я большой поклонник Spring в целом, но работать с WebFlux непросто, и у меня будет крутая кривая обучения.

5
задан mjv 8 October 2009 в 23:14
поделиться

4 ответа

Эти вещи, как правило, методом проб и ошибок, но попробуйте упорядочить по файлам firm_location.id, а не firm_firmphonenumber.location_id. Они имеют одинаковое значение, но MySQL может затем получить индекс.

4
ответ дан 14 December 2019 в 13:46
поделиться

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

Во-первых, вы можете использовать USE, чтобы заставить его использовать указанный вами индекс. Кроме того, попробуйте выполнить оптимизацию, чтобы убедиться в правильности оценки мощности. (Я предполагаю, что вы используете INNO, который оценивает его в серии случайных «погружений»; если это MyISAM, который на самом деле знает, то мне интересно, почему количество элементов выглядит так, как оно есть.)

Не потрудитесь индексировать имя и т. д. MySQL будет использовать только один индекс на таблицу для каждого соединения, и индекс просто увеличит его.

1
ответ дан 14 December 2019 в 13:46
поделиться

сколько данных? если только несколько строк, большинство баз данных будет просто сканировать таблицу независимо от того, какие у вас индексы

0
ответ дан 14 December 2019 в 13:46
поделиться

Он использует его для соединения; это значение 'citiadmin.firms_location.id' в столбце ref . Он не отображается в ключе возможных_ключей и , потому что у вас нет предложения WHERE, и он отражает только те ключи, которые есть в предложении ORDER BY.

Если вы хотите ускорить ваш запрос, попробуйте проиндексировать name_en .

1
ответ дан 14 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

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