몇 가지 레코드가있는 테이블에 'difficulties'라는 mysql db가 있습니다. 내가 "어려움에서 *를 선택"않으면 내가 다시가 기본 키 ID로 주문, 추가 된 순서대로 그들을 얻을 : 내가 "어려움에서 이름을 선택"경우,Mysql : "select <fieldname> from"의 결과 순서가 "select * from"의 결과 순서와 다릅니다
mysql> select * from difficulties;
+----+-------+-----------+--------+----------+-----------+
| id | value | name | letter | low_band | high_band |
+----+-------+-----------+--------+----------+-----------+
| 1 | 1 | very_easy | VE | 1 | 1 |
| 2 | 2 | easy | E | 2 | 5 |
| 3 | 3 | medium | M | 6 | 10 |
| 4 | 4 | hard | H | 11 | 12 |
| 5 | 0 | na | NA | 0 | 0 |
+----+-------+-----------+--------+----------+-----------+
그러나 나는 다시 그들을 얻을 다른 주문 :
mysql> select name from difficulties;
+-----------+
| name |
+-----------+
| easy |
| hard |
| medium |
| na |
| very_easy |
+-----------+
내 질문은 무엇입니까?이 주문을 어떻게 결정합니까? 거기에 어떤 논리가 있습니까? 그것은 "레코드를 나타내는 파일들이 파일 시스템 내에서 발생하는 순서"와 같은 것입니까, 아니면 모든 의도와 목적에 무작위적인 것입니까? 당신은 정렬을 요구하지 않는 경우 는, 서버가가 (비용이 많이 드는 작업이 될 수 정렬) 정렬 신경 쓰지 않으며, 반환합니다 : 이것은 정확하고 디자인
감사합니다. Piskvor, 모든게 의미가 있습니다. 나는 주문에 대해 안다. 나는이 상황에서 무슨 일이 벌어지고 있는지 궁금했다. 나는 실수로 테이블에 레코드가 나타나는 순서대로 레코드 (또는 레코드의 필드)를 반환하는 것이 DBMS가 수행 할 수있는 가장 쉽고/싼 작업이 될 것이라고 생각하고 따라서 수행 할 작업은 무엇입니까? :)이 응원을 기반으로 할 건 없어요. 건배, 최대 –
@Max Williams : @ a1ex07이 커버 링 인덱스 (즉, 'name' 열의 인덱스)와 함께 올바른지 추측 할 수 있습니다. - xe입니까? 이렇게하면 "name"열만 요청할 때 "인덱스가 가지고있는 것이 무엇이든간에 무엇이든 읽는 것"이 가장 저렴하게 수행되지만 모든 열을 요청할 때는 그렇지 않습니다. 예 : 더 긴 설명을 위해 이것 : http://peter-zaitsev.livejournal.com/6949.html – Piskvor