๐Ÿค” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋ž€?

4057 ๋‹จ์–ด databasemysqlbeginnerssql

๐Ÿ’Ž ๋ญ”๋ฐ?



๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ›จ์”ฌ ๋” ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ SQL์€ 0๋ถ€ํ„ฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „์—์„œ 0ํŽ˜์ด์ง€๋ถ€ํ„ฐ ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋นจ๋ฆฌ ์ฐพ์œผ๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

โ–ผ ๊ทธ๋Ÿฐ ๊ฒƒ์„ ํ›จ์”ฌ ๋” ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ๋„ค ์ธ๋ฑ์Šค๋ž‘ ๋น„์Šทํ•ด์š”

๐Ÿ’Ž ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?



1000์ •๋„๊นŒ์ง€๋Š” ์ธ๋ฑ์Šค ์—†์ด๋„ ๋ฌธ์ œ ์—†์ด ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ 10000์ •๋„๋ถ€ํ„ฐ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

๐Ÿ’Ž ์–ด๋–ป๊ฒŒ ํ™•์ธํ•ด์•ผ ํ•˜๋‚˜์š”?



SQL์ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ? ๊ทธ๋ƒฅ ์‚ฌ์šฉ Explain ๋ช…๋ น

// just add "EXPLAIN" before query
EXPLAIN SELECT * FROM member WHERE Id=1;




๐Ÿ“• select_type



  • SIMPLE: ๋‹จ์ˆœ SELECT(UNION ๋˜๋Š” SUB QUERY๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

  • ๐Ÿ“• ์œ ํ˜•



  • ALL : ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ๊ฒ€์ƒ‰(= ํ…Œ์ด๋ธ” ์Šค์บ”. ์Šค์บ”์€ ๋ณต์‚ฌ ์Šค์บ”๊ณผ ์œ ์‚ฌํ•˜๋ฉฐ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ „์ฒด ๋ ˆ์ฝ”๋“œ๋งŒ)

  • ์ธ๋ฑ์Šค : ์ธ๋ฑ์Šค ์‚ฌ์šฉ

  • ์ฐธ์กฐ: ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ UNIQUE ๋˜๋Š” PRIMARY KEY๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ(๐Ÿคฉ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•ฉ๋‹ˆ๋‹ค!!)

  • EQ_REF: ์ธ๋ฑ์Šค๊ฐ€ UNIQUE ๋˜๋Š” PRIMARY KEY์ž„

  • ๐Ÿ“• ํ–‰



    ์ฟผ๋ฆฌ ๋ ˆ์ฝ”๋“œ ์ˆ˜

    ์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ 50,000๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ  ํ–‰์€ 45780์ด๋ฏ€๋กœ ๊ฑฐ์˜ 92%์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ SQL์—์„œ ๊ฒ€์ƒ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ๐Ÿ’Ž ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์ž



    โ–ผ ์ธ๋ฑ์Šค ์ •๋ณด ํ‘œ์‹œ(์ง€๊ธˆ๊นŒ์ง€ ์•„๋ฌด ๊ฒƒ๋„ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„์•ผ ํ•จ)

    SHOW INDEX FROM hoge_table;
    


    โ–ผ ์ธ๋ฑ์Šค ์ƒ์„ฑ

    // ALTER TABLE hoge_table ADD INDEX hoge_index_name(column_name);
    ALTER TABLE member ADD INDEX member_index_by_id(Id);
    




    โ–ผ ๋™์ผํ•œ SELECT SQL ํ™•์ธ

    EXPLAIN SELECT * FROM member WHERE Id=1;
    


    โ–ผ ์ด์ œ ํ–‰์€ 1์ž…๋‹ˆ๋‹ค! (SQL์€ ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ/์—ด๋งŒ ๊ฒ€์ƒ‰ํ•จ)


    ๐Ÿ“• index_type



  • BํŠธ๋ฆฌ:
    ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ธ Balanced tree์ž…๋‹ˆ๋‹ค. ์ด์ง„ ํŠธ๋ฆฌ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ๐Ÿ’Ž ๊ธฐ๋ณธ ํ‚ค, ๊ณ ์œ  ํ‚ค



    - ๊ธฐ๋ณธ ํ‚ค



    ์‹ค์ œ๋กœ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฉฐ ์ผ๋ฐ˜ ์ธ๋ฑ์Šค๋ณด๋‹ค ๋น ๋ฅด๋ฏ€๋กœ ๋จผ์ € ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    - ๊ณ ์œ  ํ‚ค(์˜ˆ: ์ด๋ฉ”์ผ)



    ๋˜ํ•œ ๊ณ ์œ  ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

    โ–ผ ์šฐ์„ ์ˆœ์œ„๋Š” ์ด๋ ‡์Šต๋‹ˆ๋‹ค



    ๊ธฐ๋ณธํ‚ค > ๊ณ ์œ ํ‚ค > ์ธ๋ฑ์Šค

    ๐Ÿ’Ž ๋‹จ์ 



    1. ์ƒˆ๋กœ์šด ์ธ๋ฑ์Šค ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ฝ”๋“œ ๋ชฉ๋ก์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ.

    2.LIKE๋‚˜ %๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋ฉด SQL์ด
    ๋ชจ๋“  ๊ธฐ๋ก ๊ฒ€์ƒ‰

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ