'Выбор' всегда заказывает первичным ключом?

var arr = [
  {"id":1,"name":"admin","password":"admin","role":"Admin"},
  {"id":2,"name":"user","password":"user","role":"User"},
  {"id":3,"name":"superadmin","password":"superadmin","role":"superadmin"}
]
[![enter image description here][1]][1]
Loop through the array
arr.forEach(function(data) {
  console.log('name', data.name);
  console.log('password', data.password);
})


  [1]: https://i.stack.imgur.com/uYA9i.png
17
задан Thierry-Dimitri Roy 5 May 2009 в 13:28
поделиться

6 ответов

Нет, если вы не используете «заказ по», вам не гарантируется какой-либо порядок. Фактически, вам не гарантируется, что порядок перехода от одного запроса к другому будет таким же. Помните, что SQL работает с данными на основе набора. Так вот, та или иная реализация базы данных может определенным образом обеспечивать упорядочивание, но вы никогда не должны полагаться на это.

44
ответ дан 30 November 2019 в 10:31
поделиться

Когда я делаю выбор, всегда ли гарантируется, что мой результат будет упорядочен по первичному ключу, или мне следует указать его с помощью «порядка по»?

Нет, это по далеко не гарантировано.

SELECT  *
FROM    table

скорее всего будет использовать СКАНИРОВАНИЕ ТАБЛИЦ , который вообще не использует первичный ключ.

Вы можете использовать подсказку:

SELECT  /*+ INDEX(pk_index_name) */
        *
FROM    table

, но даже в этом случае порядок не будет гарантировано: если вы используете Enterprise Edition , запрос может быть распараллелен.

Это проблема, поскольку ORDER BY не может использоваться в предложении SELECT подзапрос, и вы не можете написать что-то вроде этого:

SELECT  (
        SELECT  column
        FROM    table
        WHERE   rownum = 1
        ORDER BY
                other_column
        )
FROM    other_table
6
ответ дан 30 November 2019 в 10:31
поделиться

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

0
ответ дан 30 November 2019 в 10:31
поделиться

Нет, упорядочивание никогда не гарантируется, если вы не используете ORDER BY.

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

2
ответ дан 30 November 2019 в 10:31
поделиться

Это зависит от вашей БД, а также от индексированных полей.

Например, в моей таблице Users у каждого пользователя есть уникальное поле varchar (20) - логин и первичный ключ - id.

И "

1
ответ дан 30 November 2019 в 10:31
поделиться

Если вам нужен конкретный порядок, объявите его с помощью ORDER BY.

Что делать, если у таблицы нет первичного ключа?

0
ответ дан 30 November 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: