Hi all,

First sorry my bad english :)

I having a problem with a large join with 10 tables with 70Gb of text data,
some joins executed by index but some others not.

I´m work with HP SERVER (Proliant NL-150) a 2 Xeon 2 Duo with 3Gb Ram and
RAID 0.

When executed to a client with small datasets the retrive is fastest, but
when i try with a large dataset client the database down or left a 10 min to
execute a query.

This is my.cnf

[client]
> port        = 3306
> socket        = /var/lib/mysql/mysql.sock
>
> [mysqld]
> port        = 3306
> socket        = /var/lib/mysql/mysql.sock
> skip-locking
> tmp_table_size  =256M
> key_buffer_size = 750M
> max_allowed_packet = 10M
> max_connections=400
> table_cache = 4000
> sort_buffer_size = 100M
> read_buffer_size = 100M
> read_rnd_buffer_size = 50M
> myisam_sort_buffer_size = 64M
> thread_cache = 8
> query_cache_type=1
> query_cache_size = 256M
> query_cache_limit=25M
> join_buffer_size=128M
> thread_concurrency = 16
> log-bin=mysql-bin
>
> server-id    = 1
>
> innodb_buffer_pool_size = 1512M
> innodb_additional_mem_pool_size = 100M
> innodb_thread_concurrency=16
>
> [mysqldump]
> quick
> max_allowed_packet = 16M
>
> [mysql]
> no-auto-rehash
>
> [isamchk]
> key_buffer = 256M
> sort_buffer_size = 256M
> read_buffer = 2M
> write_buffer = 2M
>
> [myisamchk]
> key_buffer = 256M
> sort_buffer_size = 256M
> read_buffer = 2M
> write_buffer = 2M
>
> [mysqlhotcopy]
> interactive-timeout


and that is a trouble SQL

####### SQL 1 ######
SELECT NAC.id, NAC.nome assunto, NAC.ordem
                    FROM Noticias N
                    INNER JOIN (
                        SELECT NC.noticiaId, A.id, A.nome, AC.ordem
                            FROM NoticiasClientes NC
                                INNER JOIN (AssuntosClientes AC, Assuntos A)

                                    ON (NC.clienteId = '".$clienteId."'
                                            AND NC.clienteId = AC.clienteId
                                                AND NC.assuntoId =
AC.assuntoId
                                                    AND AC.assuntoId = A.id)
                    )NAC ON (N.dataInsercao = '".$clippingDate."')
######## SQL 2 #######

SELECT NT.id, NT.titulo as tituloNoticia, NC.tipo tipoNoticia, NI.id Imagem,
VI.nome AS veiculoNome, VI.id veiculoId, NC.impactoId
                                    FROM (SELECT NCL.* FROM NoticiasClientes
NCL WHERE NCL.assuntoId = '".$filter."' AND NCL.clienteId='".$clienteId."')
NC
                                        INNER JOIN (Noticias NT, Veiculos
VI, (SELECT VCL.veiculoId, VCL.clienteId, VCL.ordem

    FROM VeiculosClientes VCL

        WHERE VCL.clienteId='".$clienteId."'

            ORDER BY VCL.ordem) VC)
                                            ON (NT.id = NC.noticiaId
                                                    AND NT.dataInsercao =
'".$clippingDate."'
                                                        AND
VI.tipoVeiculoIdIN (".$tiposVeiculos.")
                                                            AND VI.id =
NT.veiculoId
                                                )
                                            LEFT JOIN (ImagemNoticia NI)
                                            ON (NI.noticiaId = NC.noticiaId)
GROUP BY NC.noticiaId

######## SQL 3 #######

SELECT N.id, N.titulo,VCT.id veiculoId,  VCT.veiculo, VCT.tipoVeiculo,
VCT.ordemVeiculo, NAC.assuntoId, NAC.impactoId, NAC.assunto,
NAC.ordemAssunto, IMN.id as imgId
                                    FROM (Noticias N
                                        INNER JOIN ((SELECT NC.noticiaId,
I.id as impactoId, A.nome as assunto, AC.ordem as ordemAssunto, AC.assuntoId
                                                        FROM
NoticiasClientes NC
                                                            INNER JOIN
(AssuntosClientes AC, Assuntos A, Impactos I)
                                                                ON (
NC.clienteId = '".$clienteId."'
                                                                    AND
NC.clienteId = AC.clienteId
                                                                        AND
NC.assuntoId = AC.assuntoId

AND AC.assuntoId = A.id

    AND NC.impactoId = I.id)) NAC,
                                                    (SELECT V.id, V.nome as
Veiculo, VC.ordem as ordemVeiculo, TV.nome as tipoVeiculo
                                                        FROM Veiculos V
                                                            INNER JOIN
(VeiculosClientes VC, TiposVeiculos TV)
                                                                ON (
VC.clienteId = '".$clienteId."'
                                                                    AND (
TV.id IN (".$tiposVeiculos."))
                                                                        AND
V.id = VC.veiculoId

AND V.tipoVeiculoId = TV.id)) VCT)
                                            ON (N.id = NAC.noticiaId AND
N.veiculoId = VCT.id))
                                                LEFT JOIN ImagemNoticia IMN
                                                    ON (N.id = IMN.noticiaId)

                                                        WHERE
N.dataInsercao= '".$clippingDate."'
                                                            GROUP BY N.id
                                                                ORDER BY
VCT.tipoVeiculo, (VCT.ordemVeiculo & VCT.id), (NAC.ordemAssunto &
NAC.assuntoId), N.id

thank´s all.

Filipe Tomita

Reply via email to