Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите как происходит порядок поиска. / 24 сообщений из 24, страница 1 из 1
14.05.2015, 07:02:52
    #38958145
MixeYa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
Интересует вот такой запрос:
Код: sql
1.
2.
3.
SELECT имя_столбца1, имя_столбца2
FROM имя_таблицы
WHERE имя_стобца1 'какой-то текст';



Я хочу знать, mysql сначала читает всю строку, а потом отбирает нужные столбцы в ней, или она сразу читает нужные ячейки игнорируя остальные?

Как быть если я хочу сделать очень большой двумерный массив? Стоит ли делать его в mysql, или лучше выбрать другую базу данных?
...
Рейтинг: 0 / 0
14.05.2015, 07:55:23
    #38958159
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYa,
что значит очень большой?
про индексы слышал?
...
Рейтинг: 0 / 0
14.05.2015, 08:46:45
    #38958188
MixeYa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
вадя, ну миллион на миллион, например, или больше, неважно.
Про индексирование слышал.
...
Рейтинг: 0 / 0
14.05.2015, 09:11:42
    #38958216
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
Я хочу знать, mysql сначала читает всю строку, а потом отбирает нужные столбцы в ней, или она сразу читает нужные ячейки игнорируя остальные?


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

Как быть если я хочу сделать очень большой двумерный массив?


create table array (
array_id int,
row int,
col int,
value float,
primary key ( array_id, row, col )
);


Стоит ли делать его в mysql, или лучше выбрать другую базу данных?

не стоит выбирать другую СУБД, в этом смысле все СУБД одинаковы.
...
Рейтинг: 0 / 0
14.05.2015, 09:17:27
    #38958230
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYa , описывайте цель, а не свои попытки её решения. Для показанного запроса при определённых условиях сервер вообще не будет обращаться к таблице данных.

PS. В терминах SQL в принципе нет понятия массива.
...
Рейтинг: 0 / 0
14.05.2015, 09:33:20
    #38958245
MixeYa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MasterZiv,
Спасибо, это очень полезный ответ, именно такой я и ждал. Теперь многое проясняется.


Akina,
Я только пытаюсь понять как они работают, поэтому с вопросами тоже проблема. К тому же на форумах иногда ругаются на тех, кто глупые вопросы задаёт.
...
Рейтинг: 0 / 0
14.05.2015, 09:42:54
    #38958264
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYaЯ только пытаюсь понять как они работают
Бессмысленно пытаться понимать, КАК что-то делается, если не понимаешь, ЧТО ИМЕННО при этом делается. Вот с чего надо было бы начать.

MixeYaЯ хочу знать, mysql сначала читает всю строку, а потом отбирает нужные столбцы в ней, или она сразу читает нужные ячейки игнорируя остальные?
Задача MySQL (основная!) - это не просто получить результат, а сделать это максимально эффективным в каждом конкретном случае способом. Для решения у сервера есть несколько разных методов, у каждого из них имеется несколько вариаций. На основании сведений о структуре хранения, текущем наполнении и его статистике сервер выберет один из, который в данном конкретном случае по его мнению самый эффективный. И вовсе не факт, что завтра при выполнении того же самого запроса сервер выберет тот же самый метод получения результата.
...
Рейтинг: 0 / 0
14.05.2015, 10:00:04
    #38958289
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYaвадя, ну миллион на миллион, например, или больше, неважно.
Про индексирование слышал.
если "миллион на миллион" понимать как мильон строк на мильон столбцов - то это уже не понятно что ты хочешь.
мильон строк это не проблема, а вот мильон столбцов - это ещё надо поискать такие базы.

авторописывайте цель, а не свои попытки её решения. Для показанного запроса при определённых условиях сервер вообще не будет обращаться к таблице данных.

присоединяюсь, иначе пустое сотресение клавиш
...
Рейтинг: 0 / 0
14.05.2015, 11:54:12
    #38958449
MixeYa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
Ну раз уж вам так интересно, то опишу почему такой вопрос появился.

Дело в том, что стал изучать джанго, а джанго при создании запроса к базе получает строку целиком, в виде объекта. Поэтому создать запрос аналогичный тому который я написал, способа не нашёл, только через отдельный метод, который возвращает словарь.
Поэтому и возникло подозрение, что выборка осуществляется уже после того как будет считана вся строка. Ну и соответственно возник вопрос про массивы, ведь можно реализовать двумерный массив как пересечение строк и столбцов. MasterZiv, реально закрыл все возникшие вопросы :)
...
Рейтинг: 0 / 0
14.05.2015, 12:29:23
    #38958496
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYaджанго при создании запроса к базе получает строку целиком, в виде объекта.Сказки. Во-первых, не строку, а запись (разница есть, поверь). Во-вторых, не целиком, а только поля, указанные в выходном наборе. В третьих, объект из записи делает уже сам твой софт или какие-то компоненты под ним (впрочем, с формальной точки зрения уже драйвер доступа к БД преолбразует полученный от сервера ответ в объект).

MixeYaведь можно реализовать двумерный массив как пересечение строк и столбцов. MasterZiv, реально закрыл все возникшие вопросы :)
Данные в БД однозначно (пусть и с кучей оговорок) хранятся как одномерные массивы, без вариантов. Реализация многомерности - всегда искусственное мероприятие, независимо от того, что для этого используется, тупая эмуляция PIVOT или, скажем, OLAP-надстройка...
...
Рейтинг: 0 / 0
14.05.2015, 12:34:36
    #38958507
MixeYa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
Akina, я так понимаю, что данные в бд хранятся как множества.
Но ты меня немного запутал. Какая разница между записью и строкой таблицы?
...
Рейтинг: 0 / 0
14.05.2015, 12:37:09
    #38958512
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
Запись - это единица ХРАНЕНИЯ.
Строка - это единица ОТОБРАЖЕНИЯ.
...
Рейтинг: 0 / 0
14.05.2015, 12:39:54
    #38958518
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYaя так понимаю, что данные в бд хранятся как множества.Хуже. Данные в БД хранятся как куча. То есть у записей даже порядка хранения - и того нет, всё навалом. И дважды подряд выполненный на одних и тех же данных запрос, не имеющий в тексте инструкций сортировки (явной или неявной) может вернуть хоть и один и тот же набор записей, но в различающемся порядке.
...
Рейтинг: 0 / 0
14.05.2015, 13:32:24
    #38958601
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
авторсразу читает всю строку.
не так. читает всю страницу, потом находит в ней нужную строку.

авторХуже. Данные в БД хранятся как куча.
в InnoDB это не так. данные там всегда упорядоченны по первичному ключю (иногда неявному)
...
Рейтинг: 0 / 0
14.05.2015, 13:38:14
    #38958609
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
ScareCrowавторХуже. Данные в БД хранятся как куча.
в InnoDB это не так. данные там всегда упорядоченны по первичному ключю (иногда неявному)Не "всегда". Упорядочены в пределах страницы/блока и упорядочены в списке блоков таблицы. Но не всегда упорядочены в файле/на диске.
...
Рейтинг: 0 / 0
14.05.2015, 13:59:51
    #38958655
MixeYa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
множество не может быть упорядоченным. Это уже алгоритмы сортировки результатов работают.
...
Рейтинг: 0 / 0
14.05.2015, 14:01:01
    #38958658
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYaмножество не может быть упорядоченным. Это уже алгоритмы сортировки результатов работают.
чего?
...
Рейтинг: 0 / 0
14.05.2015, 14:04:46
    #38958669
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MixeYaмножество не может быть упорядоченным.Да ну? https://ru.wikipedia.org/wiki/Множество Частично упорядоченное множество, вполне упорядоченное множество — множество, на котором задано отношение порядка.
...
Рейтинг: 0 / 0
14.05.2015, 14:06:44
    #38958674
-k2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
мне кажется тс-у полезнее было бы разобраться с джанговскими моделями
...
Рейтинг: 0 / 0
14.05.2015, 15:13:57
    #38958807
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
MasterZivсразу читает всю строку.
невозможно прочитать отдельное поле таблицы, если это не поля специального типа данных типа Blob или подобных, или если это поле не входит в индекс (хотя это отдельная тема).
Заголовок записи в MyISAM содержит позицию начала каждого поля. Учитывая возможный уровень дефрагментации, когда поле может быть раскидано по разным частям диска, чтения всей строки явно не будет.

Правильный ответ на вопрос ТС: может быть да, а может и нет :)
...
Рейтинг: 0 / 0
14.05.2015, 15:38:20
    #38958856
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
retvizanMasterZivсразу читает всю строку.
невозможно прочитать отдельное поле таблицы, если это не поля специального типа данных типа Blob или подобных, или если это поле не входит в индекс (хотя это отдельная тема).
Заголовок записи в MyISAM содержит позицию начала каждого поля. Учитывая возможный уровень дефрагментации, когда поле может быть раскидано по разным частям диска, чтения всей строки явно не будет.

Правильный ответ на вопрос ТС: может быть да, а может и нет :)

правильный ответ - читается страницами.
...
Рейтинг: 0 / 0
14.05.2015, 17:04:55
    #38958973
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
вадяMixeYaвадя, ну миллион на миллион, например, или больше, неважно.
Про индексирование слышал.
если "миллион на миллион" понимать как мильон строк на мильон столбцов - то это уже не понятно что ты хочешь.
мильон строк это не проблема, а вот мильон столбцов - это ещё надо поискать такие базы.

Тут вопрос не в количестве.
Даже 10 столбцов в любой реляционной СУБД нельзя хранить.
Потому что РСУБД не хранит столбцы и строки. Она хранить записи и поля записей.
...
Рейтинг: 0 / 0
14.05.2015, 17:08:04
    #38958977
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
ScareCrowretvizanпропущено...

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

Правильный ответ на вопрос ТС: может быть да, а может и нет :)

правильный ответ - читается страницами.

Он-то не про это спрашивал, а можно ли будет избежать чтения (и записи) ненужных в данный момент обработки полей.
Нет, нельзя.
...
Рейтинг: 0 / 0
14.05.2015, 17:24:04
    #38959007
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как происходит порядок поиска.
авторТут вопрос не в количестве.
Даже 10 столбцов в любой реляционной СУБД нельзя хранить.
Потому что РСУБД не хранит столбцы и строки. Она хранить записи и поля записей.
ну меня то в этом убеждать не стоит :)
я попытался разговаривать на языке ТС
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите как происходит порядок поиска. / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]