Articles of оптимизации

Подзапросы являются единственным вариантом для повторного использования переменных?

Я хотел бы использовать MySQL в этой форме: SELECT 1 AS one, one*2 AS two потому что он короче и слаще, чем SELECT one*2 AS two FROM ( SELECT 1 AS one ) AS sub1 но первый, похоже, не работает, потому что он ожидает, что он будет столбцом. Есть ли более простой способ выполнить этот […]

Ленько оценивайте представление MySQL

У меня есть некоторые представления MySQL, которые определяют количество дополнительных столбцов на основе некоторых относительно простых подзапросов. База данных также многонаселена, поэтому каждая строка имеет идентификатор компании. Проблема, которую я имею, – это мои взгляды, которые оцениваются для каждой строки, прежде чем они будут отфильтрованы по идентификатору компании, что даст огромные проблемы с производительностью. Есть […]

Как оптимизировать запрос, содержащий объединения и подзапросы

Я унаследовал следующий запрос и структуру БД, и я хочу оптимизировать его, поскольку он медленный. Он содержит объединения и подзапросы, которые я прочитал, не является хорошим планом. Я пробовал различные способы улучшить его, но я застрял / потерял. Если это хорошо, так как это хорошо, но если есть предложения по его улучшению, я был бы […]

Почему производительность запросов MySQL настолько плоха при использовании индекса CHAR / VARCHAR?

Во-первых, я опишу упрощенную версию проблемной области. Существуют таблицы: CREATE TABLE strings ( value CHAR(3) COLLATE utf8_unicode_ci NOT NULL, INDEX(value) ) ENGINE=InnoDB; Как вы можете видеть, у него есть уникальный CHAR(3) столбца CHAR(3) . Таблица заполняется с использованием следующего сценария: CREATE TABLE a_variants ( letter CHAR(1) COLLATE utf8_unicode_ci NOT NULL ) ENGINE=MEMORY; INSERT INTO a_variants […]

SQL. Использовать результаты запроса в качестве основы для двух других запросов в одном выражении.

Я делаю расчет вероятности. У меня есть запрос, чтобы вычислить общее количество раз, когда происходит событие. Из этих событий я хочу получить количество раз, когда происходит суб-событие. Запрос для получения общих событий длится 25 строк, и я не хочу просто скопировать + вставить его дважды. Я хочу сделать две вещи для этого запроса: вычислить количество […]

Рекурсивный запрос MySQL

Моя схема базы данных выглядит так: Table t1: id valA valB Table t2: id valA valB Я хочу, чтобы для заданного набора строк в одной из этих таблиц находились строки в обеих таблицах, которые имеют одинаковые значения valA или valB (сравнение valA с valA и valB с valB, а не valA с valB). Затем я […]

Индекс MySQL для MIN и MAX

Может ли кто-нибудь прояснить этот момент из официальной документации MySQL Индексы используются … Чтобы найти значение MIN () или MAX () для определенного индексированного столбца key_col. Это оптимизируется препроцессором, который проверяет, используете ли вы WHERE key_part_N = constant во всех ключевых частях, которые происходят до key_col в индексе. В этом случае MySQL выполняет один ключевой […]

Как сообщить MySQL Optimizer использовать индекс в производной таблице?

Предположим, у вас есть такой запрос … SELECT T.TaskID, T.TaskName, TAU.AssignedUsers FROM `tasks` T LEFT OUTER JOIN ( SELECT TaskID, GROUP_CONCAT(U.FirstName, ' ', U.LastName SEPARATOR ', ') AS AssignedUsers FROM `tasks_assigned_users` TAU INNER JOIN `users` U ON (TAU.UserID=U.UserID) GROUP BY TaskID ) TAU ON (T.TaskID=TAU.TaskID) Многим людям может быть присвоено задание. Цель этого запроса – […]

Оптимальный поиск LIKE в SQL

У меня есть база данных деталей, в которой я буду постоянно запрашивать систему цитирования. В базе данных деталей содержится 1 400 000 записей. Пользователи просто начнут вводить номера деталей, которые, как они ожидают, система сможет найти после нескольких символов, поэтому мне нужно иметь возможность выполнять поиск по шаблону, например: SELECT NeededFields FROM Parts WHERE PartNumber […]

Sql: как правильно проверить, существует ли запись

Читая некоторую документацию по SQL Tuning, я нашел это: Select count(*) : – подсчитывает количество строк – Часто неправильно используется для проверки наличия записи Действительно ли значение Select count(*) так плохо? Каков правильный способ проверить наличие записи?