Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ppSpOtSQ 80 of 83 menu
◀ ▶

PHP에서 SQL 쿼리 사용 최적화

데이터베이스에 SQL 쿼리를 실행하는 것은 매우 느린 작업입니다. 따라서 데이터베이스에 대한 쿼리 수를 최소화하려고 노력해야 합니다.

가장 흔한 실수는 원하는 작업을 하나의 명령으로 수행할 수 있는 대체 쿼리가 있음에도 불구하고 루프에서 많은 SQL 쿼리를 실행하는 것입니다.

예를 통해 살펴보겠습니다.

데이터베이스 레코드의 id 배열이 주어지고 해당 id를 가진 레코드를 삭제해야 한다고 가정합시다.

잘 생각하지 않고 다음과 같은 "훌륭한" 구조를 작성할 수 있습니다:

<?php $ids = [1, 2, 3, 4, 5]; // 삭제할 배열 foreach ($ids as $id) { mysqli_query($link, "DELETE FROM users WHERE id=$id"); } ?>

이 코드의 문제점은 루프에서 많은 쿼리가 실행된다는 것입니다. 배열에 100개의 요소가 있다고 상상해 보세요 - 데이터베이스에 100개의 쿼리가 실행됩니다!

설명한 작업의 특별한 함정은 사이트 개발 시 데이터베이스가 작고 쿼리가 매우 빠르게 실행된다는 점입니다. 그러나 호스팅에서 사이트가 작동함에 따라 데이터베이스는 성장하고, 쿼리는 점점 더 느려지며, 루프에서 수백 개의 쿼리를 실행하여 사이트가 1분 이상 로드되는 상황에 이를 수 있습니다!

아주 적은 노력으로 단 하나의 쿼리만 실행되도록 만들 수 있습니다. 다음과 같이요:

<?php $ids = [1, 2, 3, 4, 5]; $str = implode(',', $ids); // 문자열 '1,2,3,4,5'를 얻습니다 mysqli_query($link, "DELETE FROM users WHERE id IN ($str)"); ?>

아래 코드를 최적화하세요:

<?php $arr = [1, 2, 2, 4, 5]; $res = []; for ($i = 1; $i < count($arr); $i++) { $note = mysqli_query($link, "SELECT * FROM users WHERE id=$id"); for ($data = []; $row = mysqli_fetch_assoc($note); $data[] = $row); $res[] = $data; } var_dump($res); ?>
← →
↑
한국어▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부