Как быстро найти запрос
У меня есть приложение, где почти все динамично. Я создаю форму редактирования для пользователя, и по сути мне нужно выполнить поиск запроса, чтобы выбрать группу флажков.
У меня есть таблица, назначающая пользователя программам, в которых хранятся идентификаторы пользователей и программ, которые сопоставляются с соответствующими записями в таблице пользователей и таблице программ. Сначала я беру одного пользователя и все программы и перебираю запрос программ, чтобы установить флажки.
<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, если это уместно.
Но ваша база данных так медленно? Сокращение количества запросов, выполняемых страницей, - это почти всегда хорошая вещь, но для простых несложных запросов вы, вероятно, не сможете превзойти скорость, кеширование и т. Д. Вашего сервера БД.