Hi, For the first time, I'm working with a really large database. I have 1 SQL statement that brings my server to it's knees. This setup is currently on my home development PC, and not in production. The server is running apache, samba, and mysql under gentoo linux. I'm the only user, so there is no vitually load on the server. The server has 1 Gig of ram. I've got 2 tables, one that holds a list of product, the other holds a list of categories that the product is associated with. My SELECT statment just grabs 10 products that are associated with a specific category. The product table has 650,000 rows and the category table has 8,150,000 rows. My SELECT statement is: SELECT pn_pricecompare_catprod.category, pn_pricecompare_catprod.asin, pn_pricecompare_product.title, pn_pricecompare_product.prod_id, pn_pricecompare_product.image_small, pn_pricecompare_product.brand, pn_pricecompare_product.manufacturer, pn_pricecompare_product.mpn, pn_pricecompare_product.model, pn_pricecompare_product.artist, pn_pricecompare_product.author, pn_pricecompare_product.binding, pn_pricecompare_product.label, pn_pricecompare_product.audiencerating, pn_pricecompare_product.studio, pn_pricecompare_product.releasedate, pn_pricecompare_product.numberofpages, pn_pricecompare_product.pubdate, pn_pricecompare_product.publisher, pn_pricecompare_product.searchindex, pn_pricecompare_product.lowest_price, pn_pricecompare_product.num_merchants FROM pn_pricecompare_catprod, pn_pricecompare_product WHERE ((pn_pricecompare_catprod.category = '283155') AND (pn_pricecompare_catprod.asin = pn_pricecompare_product.asin)) ORDER BY pn_pricecompare_product.salesrank ASC LIMIT 0,10 Sometimes this takes 10 minutes to execute. When this occurs, I can hear the hard drive thrashing. If I do an EXPLAIN, I get: table type possible_keys key key_len ref rows Extra pn_pricecompare_catprod ref PRIMARY,asin PRIMARY 4 const 355416 Using where; Using index; Using temporary; Using f... pn_pricecompare_product eq_ref asin asin 10 pn_pricecompare_catprod.asin 1 When the query executes, and I check the processes, I see "Copying to tmp table on disk" After googling for this statement I found several pages that indicate I might have to tweak the my.cnf file. I checked my my.cnf file, and it's just the default file. I found the example huge, large, medium, and small .cnf files and plan on using them to try to optimize my my.cnf file. Other than trial and error, I really don't know what I'm doing. Here is a link to my current server variables: http://retailretreat.com/mysql/server_variables.php.htm Here is a link to my current my.cnf file: http://retailretreat.com/mysql/my.cnf.txt Here is a link to my proposed my.cnf file. I'm not sure if there are any errors or mistakes in the file. http://retailretreat.com/mysql/my-new.cnf.txt Am I right that I need to tweak the my.cnf file? I think I optimized my tables with INDEXes correctly already. What should I look for first? Thanks, Grant
__________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com