SQL · ORDER BY · База данных компаний
ORDER BY в базе данных компаний
Датасет из 300 строк раздела «База данных компаний». Разбираем ORDER BY на живых данных: запрос возвращает 15 строк из 300 за 11.3 мс, полным сканом таблицы.
Структура таблицы companies
Поля и типы данных
| Поле | Тип | Nullable | Индекс |
|---|---|---|---|
id | int | нет | да (PK) |
name | varchar(80) | нет | — |
city | varchar(80) | нет | — |
industry | varchar(80) | нет | — |
founded_year | int (1991–2023) | нет | — |
employees_count | int (5–5000) | нет | — |
revenue_mln | real | нет | — |
website | varchar(80) | нет | — |
phone | varchar(80) | нет | — |
email | varchar(80) | нет | — |
is_active | boolean | нет | — |
legal_form | varchar(80) | нет | — |
tax_id | varchar(80) | нет | — |
rating | real | нет | — |
registered_date | date | нет | — |
Пример строк (8 из 300)
| id | name | city | industry | founded_year | employees_count | revenue_mln | website | phone | is_active | legal_form | tax_id | rating | registered_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 234 | АктивКонсалт | Ижевск | Финансы | 1991 | 4984 | 9322.22 | techplus.ru | +7 (933) 961-19-91 | user1775@example.com | true | ИП | 7456015 | 2.13 | 2026-06-03 |
| 235 | СтолицаСтрой | Красноярск | Образование | 2013 | 1404 | 1547.04 | russtroy.ru | +7 (969) 184-35-78 | user8069@example.com | false | ЗАО | 9012009 | 2.12 | 2026-05-15 |
| 236 | Рус-Дизайн | Красноярск | IT | 2000 | 2842 | 7111.27 | unigroup.net | +7 (963) 056-99-11 | user8473@example.com | false | НКО | 5034005 | 3.86 | 2025-09-19 |
| 237 | Гарант-Агро | Ростов-на-Дону | Туризм | 1999 | 1259 | 988.13 | rusgroup.biz | +7 (982) 434-24-84 | user9005@example.com | false | ЗАО | 6789025 | 4.46 | 2026-06-22 |
| 238 | Прогресс-Ойл | Тюмень | Производство | 2014 | 1912 | 8467.50 | novainvest.org | +7 (991) 954-99-14 | user2509@example.com | true | ИП | 6567012 | 2.01 | 2025-12-25 |
| 239 | Практик-Дизайн | Новосибирск | Реклама | 1996 | 3842 | 7225.62 | bestservis.biz | +7 (947) 483-64-90 | user6203@example.com | true | ЗАО | 5012006 | 2.30 | 2026-04-03 |
| 240 | Мега-Маркет | Москва | Туризм | 1998 | 2377 | 9247.59 | alfacorp.ru | +7 (928) 099-98-58 | user1281@example.com | false | ООО | 7345002 | 2.51 | 2025-02-21 |
| 241 | Мега-Маркет | Воронеж | Образование | 2018 | 2122 | 569.61 | megatrade.org | +7 (917) 451-85-82 | user6382@example.com | true | НКО | 5123020 | 1.34 | 2025-04-09 |
SQL-запрос: ORDER BY
Задача: вывести строки в порядке значения employees_count, а не в порядке вставки.
Результат выполнения
Условие сузило выборку с 300 до 15 строк — это 5% таблицы. Селективность — главный показатель качества условия: чем меньше доля, тем больше пользы от индекса и тем дешевле запрос на больших объёмах.
Первые строки результата
| id | name | city | industry | founded_year | employees_count | revenue_mln | website | phone | is_active | legal_form | tax_id | rating | registered_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 35 | ТехноГрупп | Екатеринбург | Туризм | 2012 | 17 | 6520.94 | alfastroy.net | +7 (976) 549-61-92 | user4680@example.com | false | ИП | 3078007 | 1.26 | 2025-11-24 |
| 172 | КвантДизайн | Тольятти | Строительство | 1992 | 27 | 6983.67 | smartcorp.net | +7 (932) 963-53-58 | user3050@example.com | false | АО | 2012013 | 4.53 | 2025-10-23 |
| 25 | ИмперияМаркет | Екатеринбург | Образование | 2015 | 30 | 5492.16 | ecoline.ru | +7 (957) 697-00-68 | user2588@example.com | true | ИП | 2123007 | 2.14 | 2025-08-13 |
| 208 | Практик-Ойл | Краснодар | Производство | 2006 | 33 | 6404.40 | ecotrade.ru | +7 (908) 842-05-77 | user9228@example.com | false | НКО | 6567008 | 4.98 | 2025-10-25 |
| 27 | ЗенитИнвест | Пермь | Логистика | 2008 | 45 | 6207.98 | uniprom.biz | +7 (962) 238-03-82 | user4288@example.com | true | ООО | 1234020 | 3.16 | 2025-01-08 |
Показаны 5 из 15 строк результата.
Как читать этот запрос
DESC — по убыванию, ASC (по умолчанию) — по возрастанию; NULL-значения группируются в конце.CREATE INDEX.ORDER BY в разных СУБД
| СУБД | Синтаксис | Отличие |
|---|---|---|
| PostgreSQL | ORDER BY поле DESC NULLS LAST | явное управление позицией NULL |
| MySQL | ORDER BY поле DESC | NULL всегда первыми при ASC, последними при DESC |
| SQLite | ORDER BY поле DESC | NULLS FIRST/LAST поддержаны с версии 3.30 |
| FileDB | ORDER BY поле DESC | ANSI-порядок, стабильная сортировка |
Скачать структуру и данные
Файлы собираются из текущего датасета (seed v1): структура таблицы, 300 строк данных и этот запрос.
Похожие запросы
Вопросы и ответы
Гарантирован ли порядок строк без ORDER BY?
Нет. Без ORDER BY движок возвращает строки в удобном ему порядке, и он может меняться между запусками. Любая «стабильность» без сортировки — совпадение.
Можно ли сортировать по нескольким полям?
Да: ORDER BY поле1 DESC, поле2 ASC. Второе поле работает как «разрешитель ничьих» для одинаковых значений первого.
Куда попадают NULL при сортировке?
Зависит от СУБД: где-то NULL идут первыми, где-то последними. PostgreSQL позволяет указать NULLS FIRST/LAST явно — это надёжнее, чем полагаться на умолчание.