Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Состать Select запрос по порядку записи в таблице.

Сообщения:  [1-10]   [11-15] 

 
 автор: Trianon   (18.02.2010 в 08:44)   письмо автору
 
   для: tim313   (17.02.2010 в 03:01)
 

Безусловно. Я, как пример, показал. Реально нужны будут методики посложнее.

  Ответить  
 
 автор: tim313   (17.02.2010 в 03:01)   письмо автору
 
   для: Trianon   (15.02.2010 в 23:09)
 

Да, такой запрос и в правду практически летает, только одно но , то что не учитываеться порядок строк, тоесть он будет прекрасно все выполнять где id идут по порядку , но в таблице где разница номеров id может быть на 10 а то и 100 раз будет выдовать не то что нужно.
А так работает шустро.

  Ответить  
 
 автор: Valick   (16.02.2010 в 12:32)   письмо автору
 
   для: tim313   (15.02.2010 в 01:14)
 

Смею предположить что о существовании книг по MySQL Вы и понятия не имеете. Оттого и пытаетесь что-то нагородить, то подбрасывая монету вверх, то гадая на кофейной гуще или куриной лапке. Поймите нужно сначала изучить все* возможности БД, что бы потом применять оптимальную конструкцию в соответствии с поставленной задачей. Оставте на время практику и уделите это время теории.
_____
* - ну хотя бы половину для начала

  Ответить  
 
 автор: Trianon   (15.02.2010 в 23:09)   письмо автору
 
   для: tim313   (15.02.2010 в 01:14)
 

По первичному ключу с ограничением на его значения.
Запрос WHERE id BETWEEN 10000 AND 10009 ORDER BY id (где id - primary key) всяко будет выполнен быстрее

  Ответить  
 
 автор: tim313   (15.02.2010 в 01:14)   письмо автору
 
   для: Trianon   (15.02.2010 в 00:47)
 

>Я же имел в виду другое.
>Когда Вы пишете LIMIT 1000, 10 - наивно предполагать, что первые 1000 строк перед десятком нужных запрошены не будут.
>Будут. И время на них затрачено будет.

Ну это я знаю, Limit 100,10 бывтрея чем limit 1000,10;

Но другова же способа нет вытащить именно те 10 которые идут после 1000.

Стандартная сортировка таблицы со страницами, подругому же никак?

  Ответить  
 
 автор: Trianon   (15.02.2010 в 00:47)   письмо автору
 
   для: tim313   (15.02.2010 в 00:39)
 

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

Я же имел в виду другое.
Когда Вы пишете LIMIT 1000, 10 - наивно предполагать, что первые 1000 строк перед десятком нужных запрошены не будут.
Будут. И время на них затрачено будет.
Просто они не будут выданы в поток результата.

  Ответить  
 
 автор: tim313   (15.02.2010 в 00:39)   письмо автору
 
   для: Trianon   (15.02.2010 в 00:03)
 

>По поводу скорости работы limit x,y; полагаю, Вы тоже сильно заблуждаетесь.
>Но в чем-либо убеждать желание отпало напрочь.

Понимаете просто я order by то делаю не по id и тоже с limit x,y, тоесть order by one*bal/golos limit x,y; , так что просто limit x,y получаеться выкидывает сортировки order by, что уж точно ускоряет работу.

Я смотрел по своим таблицам
select * from table order by one*bal/golos limit 1000,10; выполняет за 0.1 сек.
В то время как select * from table limit 1000,10; выполняет за 0.005 сек, что в 20 раз быстрея.
Тут без вопросов.

  Ответить  
 
 автор: Trianon   (15.02.2010 в 00:03)   письмо автору
 
   для: tim313   (14.02.2010 в 23:50)
 

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


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

По поводу скорости работы limit x,y; полагаю, Вы тоже сильно заблуждаетесь.
Но в чем-либо убеждать желание отпало напрочь.

  Ответить  
 
 автор: tim313   (14.02.2010 в 23:50)   письмо автору
 
   для: Trianon   (14.02.2010 в 23:16)
 

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

Хм, действительно создав таблицу с дополнительным поля типа text я получил то что хотел, вывод в том порядке в котором я записывал эти данные.
Но что меня удивило это то что что бы я не делал с этим полем(оставлял пустым, делал update) на порядок вывода это не повлияло, хотя вы писали что должно было бы чтото измениться.
Ну неважно уже есть неплохие подвижки.

Просто к чему это все....У меня есть таблицы где информация постоянно обновляеться и сортируеться по нескольким полям.
Я подумал а нафига это делать каждый раз с таблицей на 20к строк.
Непроще ли сделать копию таблицы заняся в нее данные в порядки нужной мне сортировки первой таблицы и потом быстренько получать результаты элементарным запросом вида select * from table limit x,y; который работает в 10ки раз быстрея чем order by.

  Ответить  
 
 автор: Trianon   (14.02.2010 в 23:16)   письмо автору
 
   для: tim313   (14.02.2010 в 23:05)
 

>Но при стандартом запросе без использования order by выдает записи упорядочено.

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

Но суть-то в том, что Вас как прикладного программиста (а не программиста Систем Управления Базами Данных) весь этот нижний уровень (табличное пространство, алгоритмы его распределения и т.п.) трогать не должен - Методика работы с СУ реляционной БД (коей является любой SQL сервер) абстрагируется как от порядка строк в таблице, так и от порядка столбцов.
Любая логика должна строиться на отношениях (то есть на соответствии в строке некоего значения в одном поле значению в другом поле) .
Причем если шибко хочется иметь порядковый номер строки, то такое поле нужно задать и заполнить явным образом.

Так что проще сказать себе - порядка в таблице нет. Строки лежат внавал.

Проистекает это из теории реляционных баз данных.

>Почему так?
Вот примерно поэтому.

  Ответить  

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования