BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

MySQL y DBA astronómica + indexes

adrinavarro

Helou:

Tengo un proyecto web (buscador), todo funciona de perlas. Pero tengo un marrón:

La DB tiene como tabla "dominante" una tabla llamada posts... recoje todos los posts de los blogs + excerpt + tags + contenido + autor y mil cosas más. Tengo índice en los campos necesarios, incluído en autor que es donde tengo problemas.

SELECT * FROM posts WHERE author = 'ismael', devuelve sólo 38 resultados y sin embargo el count(*) tarda mucho, al igual que la consulta final. El count sobre los 300ms y la consulta final sobre los 150ms. Hace casi 450-500ms, lo que con la generación del código hace en total unos 640 ms de media. Es mucho, estoy pensando en usar un motor externo como Sphinx que ya uso para los enlaces entrantes y salientes. ¿pistas para optimizar MySQL o es que los índices no hacen milagros?

saludos.

PichueL

Buenas. Creo recordar que además de los índices que has utilizado, puedes probar con el comando EXPLAIN. Creo que era algo así:

Explain select * from tabla

También si tienes muchos datos en las tablas y has modificado registros, índices y demás...puedes probar con el comando OPTIMIZE TABLA.

Es recomendable liberar un poco la cláusula WHERE de comandos, es decir, si tienes muchos operadores AND,OR, paréntesis.... Estaría bien echarle un ojo a ver si puedes mejorar dichas consultas para que la búsqueda te la haga más rápido.

Tampoco es bueno hacer muchas JOIN, ya que al tener que buscar en más tablas...tardará más.

En fin, suerte.

🗨️ 4
adrinavarro

No hago join, sólo el query: SELECT id FROM posts WHERE authorr='joan guerrero' ORDER BY timestamp DESC LIMIT 0, 25

El optimize lo ejecuto todos los días a las seis in the morning, si no la página sería horrorosamente lenta.

Salu2

query = 950ms :(

🗨️ 3
LineBenchmark

Y a todo eso, que máquina usas como server?. ¿Has descartado que sea problema de S.O. o de MySql?

🗨️ 2
adrinavarro

backend SQL (las consultas de testeo las ejecuto en localhost): celeron 1,2 ghz, fsb 533, l2: 512k, x86_64, debian 4.0, load avg (week): 0.21

adrinavarro

hombre, es que además el slow-query-log y log-not-using-indexes están funcionando y no muestran nada, todo está actualizado

melomano

coincido con el compañero, habría que ver las consultas y evitar en lo posible hacer producto cartesiano entre tablas