Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 13 | 1 | 6
Назад Вниз Каталог Обновить

А что по SQL? Аноним 14/09/17 Чтв 01:22:56  1061650  
.jpg (127Кб, 1342x998)
Поясните за SQL и подобные темы. Не разбираюсь в вашем программировании, но хотел бы изучить. Если есть желание разбираться в базах данных, то что нужно знать, изучать и как к этому придти. И интересует: есть ли возможность быть "типо" оптимизатором... Расскажите вообщем. Только не бейте, лучше тряпкой киньте ссаной
Аноним 14/09/17 Чтв 09:10:28  1061736
>>1061650 (OP)
Зная только БД - ты никому нахуй не будешь нужен. Начинай изучать питон, делай парсер страничек ВК, а в качестве бд выбери любую реляционку.

Когда данных в бд будет более 100 000 000 строк придешь к тому, что запросы нужно делать with index.
Аноним 14/09/17 Чтв 10:46:25  1061775
Работаю в сфере БД.
Ну типа даже не знаю. Не могу сказать, что вкатиться дохуя сложно. Но один SQL это хуйня. Нужно иметь понимание работы БД, уметь писать сложные запросы, знать логику построения программ и архитектуру.
Аноним 14/09/17 Чтв 10:55:34  1061777
Как писать эти самые сложные запросы. Вот это не понимаю. Мне как-то показали, там был на две страницы A
Аноним 14/09/17 Чтв 11:08:56  1061781
>>1061777
Ну типа сложные запросы с кучей условий, вложенностью и тд возникают в больших базах. По факту сложные запросы состоят из простых. Они просто дробятся. Довольно быстро учишься их читать. Особенно, если базу знаешь.
Аноним 15/09/17 Птн 07:08:17  1062153
Не нашел треда по sql кроме этого.

Может кто нибудь сказать как происходит обход в WHERE IN (Array)?

То есть сервер сначала берет первый элемент массива и ищет совпадения, затем второй и ищет совпадения и т.д. Или же сервер обходит строки таблицы и для каждой строки проверяет совпадает ли его поле с элементами в массиве.

Проблема в том, что массив отсортирован и нужно сделать выборку строк таблицы в точно таком же порядке как расположены элементы массива.

Подскажите как происходит, гуру sql, или же скажите как гуглить. Логичнее предположить что обход происходит по второму варианту ибо выгоднее по времени, но я в документации видел результаты выборок где элементы отсортированы.

Делать несколько запросов поэлементно не вариант.
Аноним 15/09/17 Птн 10:10:52  1062208
>>1062153
Во-первых, делает он это максимально эффективно, а тебе не следует беспокоиться об этом.
Во-вторых не вижу проблемы в твоей "проблеме" - бери да селекти.
В-третьих, если хочешь узнать что быстрее для твоего случая, пиши бенчмарк, но уверен, что ты только впустую потратишь время на это.
Аноним 15/09/17 Птн 10:19:57  1062213
>>1062208
Мне нужно не быстрее, мне нужно взять строки в том же порядке как и номера в массиве. Но делать десятки запросов выбирая поочередно как-то мне кажется не очень правильно.
Аноним 15/09/17 Птн 11:36:35  1062254
>>1062213
Массив отсортирован или просто как-то упорядочен? В любом случае что мешает отсортировать результат выборки (в запросе или уже после)?
Аноним 15/09/17 Птн 11:56:32  1062259
>>1062254
Есть таблица продавцов.

В таблице клиентов есть ссылка на id звонка через который этот клиент попал в систему и id продавца.

В таблице звонков вообще все звонки.

Требуется взять 10 последних звонков клиентов определенного менеджера.

Что есть сейчас: присоединяю таблицу звонков к таблице клиентов и получаю массив их номеров, далее ищу все пропущенные звонки с этих номеров, сортирую обратно по дате и беру первые 10. В итоге получается выборка строк пропущенных звонков отсортированных по дате. И из нее я получаю массив номеров телефонов типа (+79807654321, +79801234567, ...) которые стоят в порядке даты звонка.

Что хотелось бы: получить клиентов с этими номерами. В записи EF это Clients.Where(x => NumberArray.Contains(x.Call.Number)). После трансляции этого в sql получится конструкция WHERE ... IN ( ... ).

Так вот, если обход идет по строкам таблицы, то порядок нарушится и строки будут браться в порядке перебора строк. Если же обход будет по элементам массива, то порядок сохранится и строки будут браться в порядке перебора массива, примерно в виде [0] => строка 1, [1] => строка 2, ... .

Прошу прощения за немного сумбурное изложение.
Аноним 15/09/17 Птн 12:39:45  1062273
>>1062259
Заебашь хранимку, принимающую на вход ФИО менеджера и отдающую 10 или сколько там номеров телефонов.

Затем создай объект из сформированного EF типа и вызови хранимку.
Аноним 15/09/17 Птн 12:53:46  1062275
>>1062273
Спасибо за совет!
Аноним 15/09/17 Птн 14:05:31  1062302
>>1062259
>присоединяю таблицу звонков к таблице клиентов и получаю массив их номеров, далее ищу все пропущенные звонки с этих номеров, сортирую обратно по дате и беру первые 10.
Ты всё это одним запросом делаешь? Если так, то у тебя уже присоединена таблица с клиентами и нет никакой проблемы их получить.

А хранимки - это пиздец.
Аноним 15/09/17 Птн 14:12:09  1062305
>>1062302
Дополню.
В том случае, если это не делается одним запросом (в чём я сомневаюсь), что мешает сделать WHERE IN, а уже у себя на клиенте отсортировать этот список о господи, из 10 номеров, КАРЛ!!!? Ответ: ничего!
Придумываешь себе проблемы на ровном месте и героически их решаешь. Ещё и хранимки приплести собрался. Пиздец - одним словом.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 13 | 1 | 6
Назад Вверх Каталог Обновить

Топ тредов
Избранное