Как быстро найти запрос

У меня есть приложение, где почти все динамично. Я создаю форму редактирования для пользователя, и по сути мне нужно выполнить поиск запроса, чтобы выбрать группу флажков.

У меня есть таблица, назначающая пользователя программам, в которых хранятся идентификаторы пользователей и программ, которые сопоставляются с соответствующими записями в таблице пользователей и таблице программ. Сначала я беру одного пользователя и все программы и перебираю запрос программ, чтобы установить флажки.

<cfloop query="Rc.programs">
    <dd><input type="checkbox" name="programs" value="#Rc.programs.id#" /> #Rc.programs.name#</dd>
</cfloop>

В идеале я хочу вытащить все записи из таблицы членства в программе и выполнить какой-то поиск по ней. Я мог сделать запрос запросов, но мне было интересно, есть ли более быстрый способ по существу поиска запроса. Мой запрос запросов будет выглядеть следующим образом, если это поможет людям понять.

SELECT * FROM Rc.programs WHERE programid = #Rc.programs.id#

1 ответ

Решение

QoQ, безусловно, самый простой способ сделать это, но не забывайте свой CFQUERYPARAM:

SELECT * FROM Rc.programs WHERE programid =
   <cfqueryparam value="#Rc.programs.id#" cfsqltype="WHATEVER_IT_IS">

Вы также можете ссылаться на отдельный столбец / поле запроса в виде массива и выполнять поиск только в этом столбце, используя функции массива, включая arrayFind() (что может быть только в последних версиях).

arrayFind( Rc.programs.programId, YOUR_ID_HERE )

Если это не достаточно быстро, вы всегда можете построить какую-то структуру данных или индекс в памяти и сохранить его в переменной Application-scope, если это уместно.

Но ваша база данных так медленно? Сокращение количества запросов, выполняемых страницей, - это почти всегда хорошая вещь, но для простых несложных запросов вы, вероятно, не сможете превзойти скорость, кеширование и т. Д. Вашего сервера БД.

Другие вопросы по тегам