de Martin LE TARNEC

Matemáticas


Existe otro tipo más de confusiones que impiden el uso correcto de los índices, el empleo del cálculo en vez de utilizar expresiones lógicas.

Considera la siguiente declaración. ¿Se puede usar un índice sobre NUMERIC_NUMBER?

SELECT numeric_number
  FROM table_name
 WHERE numeric_number - 1000 > ?

De manera similar, ¿puede la siguiente declaración usar un índice sobre A y B (escoge el orden)?

SELECT a, b
  FROM table_name
 WHERE 3*a + 5 = b

Veamos esas preguntas desde otro punto de vista; si desarrollas una base de datos SQL, ¿le agregarías una resolución de ecuaciones? La mayoría de los vendedores de base de datos contestan que “¡No!”, y tampoco utilizan el índice en los anteriores dos ejemplos.

Se puede usar matemáticas regulares para complicar de manera intencio­nal una condición, (como ya vimos previamente para las búsquedas sobre texto completo con LIKE). Basta con agregar un cero, por ejemplo:

SELECT numeric_number
  FROM table_name
 WHERE numeric_number + 0 = ?

Sin embargo, podemos indexar estas expresiones con un índice basado en una función si se usan cálculos de una manera inteligente y transformar el filtro where como una ecuación:

SELECT a, b
  FROM table_name
 WHERE 3*a - b = -5

Se mueven solamente las referencias de la tabla hacia un lado y las constantes hacia otro lado. Se puede crear después un índice basado en función para el lado izquierdo de la ecuación:

CREATE INDEX math ON table_name (3*a - b)

Si te gusta mi manera de explicar, te encantará mi libro.

Previous pageNext page

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

Acerca del autor

Foto de Markus Winand

Markus Winand es defensor del resurgimiento del SQL. Su misión es la de presentar a los desarrolladores la evolución de SQL en el siglo XXI. Es posible contratar a Markus según disponibilidad o como orador o consultor en winand.at.

Adquiere tu libro

Portada de “Rendimiento SQL explicado”: Ardilla corriendo en la hierba

La esencia del tuning de SQL en 200 páginas

Compra ahora
(libro de bolsillo y/o PDF)

Contratar a Markus

La manera más rápida y fácil de beneficiarse de su extenso conocimiento y experiencia.
Aprende más »

Entrar en contacto con Markus

Suscríbete a listas de correoRSS FeedMarkus Winand en LinkedInMarkus Winand en XINGMarkus Winand en TwitterMarkus Winand en Bluesky
Copyright 2017-2025 Martin LE TARNEC, Markus Winand. All righs reserved.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacidad y RGPD