Limitar la cantidad de datos recuperados en MySQL con MySQLi y PDO
En bases de datos grandes, obtener demasiados registros en una consulta SELECT
puede afectar el rendimiento. Para evitarlo, MySQL ofrece la cláusula LIMIT
, que permite restringir la cantidad de registros devueltos.
Su sintaxis básica es:
SELECT columna1, columna2 FROM nombre_tabla LIMIT cantidad;
Por ejemplo, para obtener solo los primeros 10 registros:
SELECT * FROM Orders LIMIT 10;
También podemos usar OFFSET
para definir desde qué posición empezar a recuperar datos. Por ejemplo, para obtener los registros del 11 al 20:
SELECT * FROM Orders LIMIT 10 OFFSET 10;
Otra forma de escribirlo en MySQL es:
SELECT * FROM Orders LIMIT 10, 10;
Veamos cómo aplicarlo en MySQLi y PDO.
Limitar datos con MySQLi (Orientado a Objetos)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, nombre, apellido FROM MyGuests LIMIT 2";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Nombre: " . $row["nombre"]. " " . $row["apellido"]. "
";
}
} else {
echo "0 resultados";
}
$conn->close();
?>
Limitar datos con MySQLi (Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT id, nombre, apellido FROM MyGuests LIMIT 3";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "ID: " . $row["id"]. " - Nombre: " . $row["nombre"]. " " . $row["apellido"]. "
";
}
} else {
echo "0 resultados";
}
mysqli_close($conn);
?>
Limitar datos con PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, nombre, apellido FROM MyGuests LIMIT :limite OFFSET :offset");
$limite = 2;
$offset = 1;
$stmt->bindParam(':limite', $limite, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row) {
echo "ID: " . $row["id"]. " - Nombre: " . $row["nombre"]. " " . $row["apellido"]. "
";
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
Ejemplo de Tabla con Datos Limitados
ID | Nombre | Apellido |
---|---|---|
1 | Juan | Pérez |
2 | María | Gómez |
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias