Поясните за SQL и подобные темы. Не разбираюсь в вашем программировании, но хотел бы изучить. Если есть желание разбираться в базах данных, то что нужно знать, изучать и как к этому придти. И интересует: есть ли возможность быть "типо" оптимизатором... Расскажите вообщем. Только не бейте, лучше тряпкой киньте ссаной
>>1061650 (OP)Зная только БД - ты никому нахуй не будешь нужен. Начинай изучать питон, делай парсер страничек ВК, а в качестве бд выбери любую реляционку. Когда данных в бд будет более 100 000 000 строк придешь к тому, что запросы нужно делать with index.
Работаю в сфере БД. Ну типа даже не знаю. Не могу сказать, что вкатиться дохуя сложно. Но один SQL это хуйня. Нужно иметь понимание работы БД, уметь писать сложные запросы, знать логику построения программ и архитектуру.
Как писать эти самые сложные запросы. Вот это не понимаю. Мне как-то показали, там был на две страницы A
>>1061777Ну типа сложные запросы с кучей условий, вложенностью и тд возникают в больших базах. По факту сложные запросы состоят из простых. Они просто дробятся. Довольно быстро учишься их читать. Особенно, если базу знаешь.
Не нашел треда по sql кроме этого.Может кто нибудь сказать как происходит обход в WHERE IN (Array)?То есть сервер сначала берет первый элемент массива и ищет совпадения, затем второй и ищет совпадения и т.д. Или же сервер обходит строки таблицы и для каждой строки проверяет совпадает ли его поле с элементами в массиве.Проблема в том, что массив отсортирован и нужно сделать выборку строк таблицы в точно таком же порядке как расположены элементы массива.Подскажите как происходит, гуру sql, или же скажите как гуглить. Логичнее предположить что обход происходит по второму варианту ибо выгоднее по времени, но я в документации видел результаты выборок где элементы отсортированы.Делать несколько запросов поэлементно не вариант.
>>1062153Во-первых, делает он это максимально эффективно, а тебе не следует беспокоиться об этом.Во-вторых не вижу проблемы в твоей "проблеме" - бери да селекти.В-третьих, если хочешь узнать что быстрее для твоего случая, пиши бенчмарк, но уверен, что ты только впустую потратишь время на это.
>>1062208Мне нужно не быстрее, мне нужно взять строки в том же порядке как и номера в массиве. Но делать десятки запросов выбирая поочередно как-то мне кажется не очень правильно.
>>1062213Массив отсортирован или просто как-то упорядочен? В любом случае что мешает отсортировать результат выборки (в запросе или уже после)?
>>1062254Есть таблица продавцов.В таблице клиентов есть ссылка на id звонка через который этот клиент попал в систему и id продавца.В таблице звонков вообще все звонки.Требуется взять 10 последних звонков клиентов определенного менеджера.Что есть сейчас: присоединяю таблицу звонков к таблице клиентов и получаю массив их номеров, далее ищу все пропущенные звонки с этих номеров, сортирую обратно по дате и беру первые 10. В итоге получается выборка строк пропущенных звонков отсортированных по дате. И из нее я получаю массив номеров телефонов типа (+79807654321, +79801234567, ...) которые стоят в порядке даты звонка.Что хотелось бы: получить клиентов с этими номерами. В записи EF это Clients.Where(x => NumberArray.Contains(x.Call.Number)). После трансляции этого в sql получится конструкция WHERE ... IN ( ... ).Так вот, если обход идет по строкам таблицы, то порядок нарушится и строки будут браться в порядке перебора строк. Если же обход будет по элементам массива, то порядок сохранится и строки будут браться в порядке перебора массива, примерно в виде [0] => строка 1, [1] => строка 2, ... .Прошу прощения за немного сумбурное изложение.
>>1062259Заебашь хранимку, принимающую на вход ФИО менеджера и отдающую 10 или сколько там номеров телефонов.Затем создай объект из сформированного EF типа и вызови хранимку.
>>1062273Спасибо за совет!
>>1062259>присоединяю таблицу звонков к таблице клиентов и получаю массив их номеров, далее ищу все пропущенные звонки с этих номеров, сортирую обратно по дате и беру первые 10.Ты всё это одним запросом делаешь? Если так, то у тебя уже присоединена таблица с клиентами и нет никакой проблемы их получить.А хранимки - это пиздец.
>>1062302Дополню.В том случае, если это не делается одним запросом (в чём я сомневаюсь), что мешает сделать WHERE IN, а уже у себя на клиенте отсортировать этот список о господи, из 10 номеров, КАРЛ!!!? Ответ: ничего!Придумываешь себе проблемы на ровном месте и героически их решаешь. Ещё и хранимки приплести собрался. Пиздец - одним словом.