⊗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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부