Есть ли какая-либо разница в производительности между использованием текстовых и целочисленных и встроенных в приложение константных столбцов типа в MySQL и php? - PullRequest
0 голосов
/ 25 мая 2018

В моем случае у меня есть таблица, в которой хранится коллекция записей со схожей информацией, но каждая из которых содержит столбец уникального типа, используемый в различных частях моего приложения.Я знаю, я знаю, что это «микрооптимизация», но она является неотъемлемой частью моего приложения (она будет хранить много записей), и я хотел бы, чтобы она была оптимизирована, и мне также просто любопытно, это быстрее использоватьтип текста и выберите его как
SELECT ... WHERE type = 'some_type' или используйте константу, определенную в PHP, например const SOMETYPE = 1;run_query ('SELECT ... WHERE type =' .SOMETYPE);

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Доминирующее время, затрачиваемое на любой запрос, - выбор строк для работы.Функции, строка против int и т. Д., Имеют только незначительные различия в производительности.Сосредоточьтесь на том, что является чистым для вашего кода, а также на том, что сводит к минимуму количество строк, к которым обращаются.

После того, как вы это сделаете, минимизируйте количество обращений к серверу.Несмотря на это, я создал много веб-страниц, которые выполняют 20-50 запросов (каждый из которых хорошо оптимизирован);производительность страницы достаточна.

Вы также можете рассмотреть тип данных ENUM.

sex ENUM('unk', 'male', 'female') NOT NULL

дает вам WHERE sex = 'male', реализованный как 1-байтовое целое число под обложками.

0 голосов
/ 25 мая 2018

Сравнение строк всегда будет медленнее, чем целочисленное сравнение.Как правило, то, что делается, - это то, что строка хранится в отдельной таблице, возможно, называемой standard_types, или что-то еще, что имеет смысл для сохраняемых «констант».В этой таблице есть уникальное поле идентификатора, на которое могут ссылаться другие таблицы.

Таким образом, если вам нужны строки для отчетов, запросы отчетов могут объединяться с таблицей типов для строк отображения.В идеале, на мой взгляд, значения идентификаторов должны отражать стандартные числа, которые могут быть выражены как значения перечисления или константы в клиентском коде;это сводит к минимуму зависимость от таблицы «types» для запросов без отчетов.

Некоторые могут возразить против согласования списка стандартных значений идентификаторов и их значений по базе данных и одной или нескольким базам кода приложения;но альтернативой является координация стандартных строк во всем этом (домены, которые могут по-разному обрабатывать эти строковые значения).

...