|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.08.2009, 01:38 | #1 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
В чём разница между запросами и программным обходом записей базы?
Здравствуйте.
Меня всегда интересовал вопрос - Каким образом работают SQL запросы? Есть ли разница в алгоритмах или во времени выполнения действий? 1. Запрос Код:
Код:
Спасибо... Последний раз редактировалось Arkuz; 20.08.2009 в 01:40. |
20.08.2009, 02:18 | #2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Ну сам подумай. Если у тебя таблица в базе из 30000 записей, из которых 10 удовлетворяют условию, то в первом случае сервер внутри себя выделит именно эти 10 и отдаст тебе. А во втором случае сервер погонит тебе всю таблицу, чтобы ты мог сам все 30000 записей перебрать.
|
20.08.2009, 02:25 | #3 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Конечно есть. Dataset кэширует данные с БД. Т.е. запрос тянет данные с сервера (условно) на клиентскую машину. И только после этого ты можешь выполнить цикл по записям. В случае же составления правильного запроса будут возвращены только необходимые данные, а потому сократится время на ненужное копирование (кэширование) и циклический пробег. В случае с большим
количеством данных это очень сильно заметно. _________ Опоздал... |
20.08.2009, 03:17 | #4 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
Господа, я это всё прекрасно понимаю...
Меня интересует как происходит выборка данных непосредственно при запросе? Мне интересно узнать принципы выборок внутренних алгоритмов при SQL запросах. Каким методом запрос выбирает именно то, что мне нужно... Видимо во внутренней реализации и кроется скорость обработки и экономия времени? Именно это я и хочу узнать... Внутреннее устройсво алгоритма выборки... Просто поясните на пальцах что там происходит? Последний раз редактировалось Arkuz; 20.08.2009 в 03:21. |
20.08.2009, 07:12 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
Цитата:
Разработчики СУБД годами придумывают технологии хранения и доступа данных, чтобы обеспечить быстрый эффективный доступ, а Вы хотите, чтобы Вам на пальцах рассказали. 1) можно почитать хорошие книжки. При поиске обратить внимание на ключевые слова Индексы и План запроса 2) общая идея такова - строятся специальные структуры данных, называемые Индексами. (в разных СУБД они внутри организовываются по разному, но принцип один). Поиск нужного значения осуществляется не по самой таблице, а по упорядоченному дереву. Например, ключевое поле. Даже если у Вас таблица на миллионы записей, запрос select * from Таблица where ID = Нужный_ключик отработает за доли секунды!! |
|
20.08.2009, 12:42 | #6 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
добавлю
не всегда эффективно выбирать данные, пользуясь индексом иногда и фулскан быстрее вот именно об этом и стоит почитать в книжках про индексы - когда стОит использовать индексы, а когда они мешают |
20.08.2009, 16:19 | #7 |
Форумчанин
Регистрация: 22.09.2007
Сообщений: 540
|
Благодарен за информацию...
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В чём разница между TCP и UDP? | TwiX | Работа с сетью в Delphi | 4 | 28.07.2009 23:54 |
в чём разница? | Dimarik | Общие вопросы C/C++ | 1 | 25.04.2009 21:27 |
Разница между датами | kykysya | Общие вопросы Delphi | 8 | 26.03.2009 18:22 |
Ну тогда скажите здесь в чём разница...? | Arkuz | Общие вопросы Delphi | 4 | 23.04.2008 21:58 |
Разница между датами | deenka | БД в Delphi | 3 | 31.01.2008 13:21 |