programing

데이터베이스 테이블의 "select count(1) from table_name"은 무엇을 의미합니까?

magicmemo 2023. 3. 17. 20:32
반응형

데이터베이스 테이블의 "select count(1) from table_name"은 무엇을 의미합니까?

실행 시select count(*) from table_name행 수를 반환합니다.

무엇인가.count(1)뭐 하는 거야?1여기를 의미합니까?이거랑 똑같아요?count(*)(실행 시 동일한 결과를 얻을 수 있습니다)

COUNT 함수에 대한 매개 변수는 각 행에 대해 평가되는 식입니다.COUNT 함수는 식이 평가하는 행 수를 null이 아닌 값으로 반환합니다.(*는 평가되지 않는 특수한 표현입니다.행의 수를 반환할 뿐입니다).

표현식에는 ALL과 DISTINCT라는 두 가지 추가 수식자가 있습니다.중복이 폐기될지 여부를 결정합니다.ALL이 기본값이기 때문에 이 예제는 카운트(ALL 1)와 동일합니다.즉, 중복은 유지됩니다.

식 "1"은 모든 행에 대해 non-null로 평가되며 중복을 제거하지 않으므로 COUNT(1)는 항상 COUNT(*)와 동일한 숫자를 반환해야 합니다.

다음은 질문에 대한 답변에 도움이 되는 링크입니다.요컨대:

count(*)는 올바른 쓰기 방법이며 count(1)는 내부적으로 OPTIMIZED TO BE count(*)입니다.

a) 1이 null이 아닌 행의 카운트 효율은
b) 행을 카운트하다

오라클의 카운트(*)와 카운트(1)의 차이는 무엇입니까?

count(*)는 모든 레코드를 카운트하는 것을 의미합니다.즉, 각 셀과 셀을 카운트하지만

count(1)는 값이 1인 유사 열을 하나 추가하고 모든 레코드의 카운트를 반환함을 의미합니다.

이것은 이 두 가지 차이와 유사합니다.

SELECT * FROM table_name and SELECT 1 FROM table_name.  

네가 한다면.

SELECT 1 FROM table_name

표의 각 행에 대해 숫자 1이 표시됩니다.그렇구나count(*)그리고.count(1)같은 결과를 얻을 수 있습니다.count(8)또는count(column_name)

차이가 없다.

COUNT(1)는 기본적으로 각 행에 대해 1개의 상수 값을 카운트하는 것입니다.여기 있는 다른 사용자들이 말했듯이, 이것은COUNT(0)또는COUNT(42). 다음 중 하나라도NULL값이면 충분합니다.

http://asktom.oracle.com/pls/asktom/f?p=100:11:2603224624843292::::P11_QUESTION_ID:1156151916789

Oracle Optimizer에는 버그가 포함되어 있었습니다.그 때문에, 선택한 컬럼과 인덱스에 포함되어 있는지 어떤지에 의해서 카운트가 영향을 받게 되어, COUNT(1) 규칙이 생겨났습니다.

SELECT COUNT(1) from <table name>

같은 일을 해야 한다

SELECT COUNT(*)  from <table name>

이 더 몇 수 .SELECT COUNT(*)DB db db db 、 DB 。

SELECT COUNT(col_name) from <table name>

그러나 지정된 열에 대해 값이 지정되지 않은 행만 카운트되므로 다른 의미가 있습니다.

오라클에서 나는 이것들이 정확히 같은 의미를 가지고 있다고 믿는다.

다음과 같이 테스트할 수 있습니다.

create table test1(
 id number,
 name varchar2(20)
);

insert into test1 values (1,'abc');
insert into test1 values (1,'abc');

select * from test1;
select count(*) from test1;
select count(1) from test1;
select count(ALL 1) from test1;
select count(DISTINCT 1) from test1;

묻느냐에 실행한다고 도 있습니다.select count(1) from random_table; 달리다select count(*) from random_table다른 사람들은 그들이 정확히 똑같다고 주장한다.

링크에서는 2개의 속도 차이가 FULL TABLE SCAN과 FAST FULL SCAN의 차이임을 나타냅니다.

언급URL : https://stackoverflow.com/questions/181272/what-does-select-count1-from-table-name-on-any-database-tables-mean

반응형