개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.08 07:07

--log-queries-not-using-indexes 옵션에 대한 질문

목록
  • HTTP전문가 7시간 전 2025.08.08 07:07 새글
  • 1
    1
교수님, 저는 MySQL에서 query optimization에 관심이 많습니다.
하지만 --log-queries-not-using-indexes 옵션을 사용하여 인덱스가 사용되지 않은 쿼리를 로그로 기록할 때,
인덱스가 사용되지 않은 쿼리가 로그에 기록되는 조건은 무엇입니까?
또한 이 옵션을 사용하면 인덱스를 사용하는 쿼리가 로그에 기록되지 않습니까?

    댓글목록

    profile_image
    나우호스팅  7시간 전



    --log-queries-not-using-indexes 옵션을 사용하여 인덱스가 사용되지 않은 쿼리를 로그로 기록할 때, 인덱스가 사용되지 않은 쿼리의 조건은 다음과 같습니다.

    1. 쿼리가 인덱스를 사용하지 않거나, 인덱스를 사용하는 경우에도 인덱스 스캔이 불필요하여 인덱스를 사용하지 않습니다.
    2. 쿼리가 인덱스를 사용하지만, 인덱스 스캔이 불필요한 경우, 인덱스를 사용하지 않습니다.

    이 옵션을 사용하면 인덱스를 사용하는 쿼리가 로그에 기록되지 않습니다.

    예를 들어, 다음과 같은 쿼리가 실행될 때, 인덱스가 사용되지 않은 쿼리의 조건을 확인할 수 있습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test';
    
    


    이 쿼리는 인덱스를 사용하지 않습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name LIKE '%test%';
    
    


    이 쿼리는 인덱스를 사용하지 않습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE id BETWEEN 1 AND 10;
    
    


    이 쿼리는 인덱스를 사용하지 않습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용하지 않습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10;
    
    


    이 쿼리는 인덱스를 사용하지 않습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용하지 않습니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1;
    
    


    이 쿼리는 인덱스를 사용합니다.

    #hostingforum.kr
    sql
    
    CREATE TABLE test (
    
      id INT PRIMARY KEY,
    
      name VARCHAR(255)
    
    );
    
    
    
    CREATE INDEX idx_name ON test (name);
    
    
    
    EXPLAIN SELECT * FROM test WHERE name = 'test' AND id BETWEEN 1 AND 10 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test' AND id = 1 AND name = 'test';
    
    


    이 쿼리는 인덱스를 사용합니다.

    ```sql
    CREATE TABLE test (
    id INT PRIMARY KEY,
    name VARCHAR(255)
    );

    CREATE INDEX idx_name ON test (name);

    EXPLAIN SELECT * FROM test WHERE name = 'test'

    2025-08-08 07:08

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 42,423건 / 1 페이지

검색

게시물 검색