Почему подзапрос в этом запросе MYSQL намного медленнее, чем этот?

Нам не нужны изменения на стороне сервера. вы можете исправить это только с помощью файла web.config Это помогло мне. попробуйте это

<appSettings>
 <add key="aspnet:MaxJsonDeserializerMembers" value="2147483647" />
<add key="aspnet:UpdatePanelMaxScriptLength" value="2147483647" />
</appSettings>  

and   

<system.web.extensions>
<scripting>
  <webServices>
    <jsonSerialization maxJsonLength="2147483647"/>
  </webServices>
</scripting>

0
задан symcbean 16 January 2019 в 13:04
поделиться

1 ответ

У меня слишком много вопросов, чтобы дать вам прямой ответ.

  • OR - убийца производительности. Это может быть хорошим кандидатом для преобразования в UNION. Если это так, то пункты IS [not] NULL могут быть одновременно упрощены.
  • MIN и LIMIT 1 сражаются друг с другом. Я подозреваю, что вы должны избавиться от MIN.
  • Не используйте LEFT, если не планируете пропустить строки в «правой» таблице.
  • См. Мои советы здесь по индексам для usercards.
  • usercards.user_id IS NULL кажется новым условием; не изменяет ли это результаты?
  • Исправьте сопоставление одного из столбцов card_code, чтобы оно соответствовало другому. То, что у вас есть, либо отрицательно сказывается на использовании индекса, либо замедляет работу.
  • Попробуйте перевернуть запрос. Таким образом, начните с поиска самого последнего идентификатора, , затем JOIN (при условии, что LEFT не требуется) для других таблиц.
  • INDEX(card_code, active, last_login, id) - в таком порядке.
  • (Может быть больше; исправьте некоторые из них; затем давайте обсудим дальше.)
  • (Используйте более короткие псевдонимы - чтобы избежать беспорядка.)

Для дальнейшего обсуждения, предоставить

SHOW CREATE TABLE -- for each table
EXPLAIN SELECT -- for each query being discussed
0
ответ дан Rick James 16 January 2019 в 13:04
поделиться
Другие вопросы по тегам:

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