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

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

1 голос
/ 22 февраля 2011

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

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

<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 Ответ

4 голосов
/ 22 февраля 2011

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, если это уместно.

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

...