I haven't seen any traffic on this thread, so I figured I'd repost it
with a slightly more catchy subject. :)

Has anyone looked into this?

On Tue, Oct 08, 2002 at 09:12:13PM -0500, Shane Allen wrote:
> >Description:
> 
> See "How-To-Repeat"
> 
> >How-To-Repeat:
> 
> I uploaded a copy of the tables to support.mysql.com/pub/mysql/secret.
> Each of the tables below contains many rows (from 50-100k per table).
> We were unable to duplicate with a smaller result set,
> 
> CREATE TABLE listing (
>   id int(10) unsigned NOT NULL default '0',
>   seller_id int(10) unsigned NOT NULL default '0',
>   PRIMARY KEY  (id),
>   KEY seller_id (seller_id)
> ) TYPE=MyISAM;
> 
> CREATE TABLE question (
>   id int(10) unsigned NOT NULL auto_increment,
>   listing_id int(10) unsigned NOT NULL default '0',
>   buyer_id int(10) unsigned NOT NULL default '0',
>   last_modified timestamp(14) NOT NULL,
>   PRIMARY KEY  (id),
>   KEY buyer_id (buyer_id),
>   KEY listing_id (listing_id)
> ) TYPE=MyISAM;
> 
> CREATE TABLE user (
>   id int(10) unsigned NOT NULL default '0',
>   username char(15) NOT NULL default '',
>   PRIMARY KEY  (id)
> ) TYPE=MyISAM;
> 
> SELECT COUNT(*) FROM question, listing, user ub, user us WHERE 
> question.listing_id = listing.id AND question.buyer_id = ub.id AND 
> listing.seller_id = us.id AND (ub.id = 2346 OR us.id = 2346)
> ORDER BY question.last_modified DESC;
> 
> +----------+
> | COUNT(*) |
> +----------+
> |        4 |
> +----------+
> 
> SELECT question.id AS question_id, listing.id AS listing_id,
> ub.id AS buyer_id, ub.username AS buyer_name, us.id AS seller_id, 
> us.username as seller_name FROM question, listing, user ub, user us 
> WHERE question.listing_id = listing.id AND question.buyer_id = ub.id AND 
> listing.seller_id = us.id AND (ub.id = 2346 OR us.id = 2346) ORDER BY 
> question.last_modified DESC;
> 
> +-------------+------------+----------+------------+-----------+-------------+
> | question_id | listing_id | buyer_id | buyer_name | seller_id | seller_name |
> +-------------+------------+----------+------------+-----------+-------------+
> |        6850 |      12909 |     2346 | user2346   |      4879 | user4879    |
> |        4823 |      39039 |     2346 | user2346   |     14831 | user14831   |
> +-------------+------------+----------+------------+-----------+-------------+
> 2 rows in set (0.00 sec)
> 
> # Adding SQL_CALC_FOUND_ROWS shows correct results
> SELECT SQL_CALC_FOUND_ROWS question.id AS question_id, 
> listing.id AS listing_id, ub.id AS buyer_id, ub.username AS buyer_name, 
> us.id AS seller_id, us.username as seller_name FROM question, 
> listing, user ub, user us WHERE question.listing_id = listing.id AND
> question.buyer_id = ub.id AND listing.seller_id = us.id AND 
> (ub.id = 2346 OR us.id = 2346) ORDER BY question.last_modified DESC;
> 
> +-------------+------------+----------+------------+-----------+-------------+
> | question_id | listing_id | buyer_id | buyer_name | seller_id | seller_name |
> +-------------+------------+----------+------------+-----------+-------------+
> |        6850 |      12909 |     2346 | user2346   |      4879 | user4879    |
> |        4823 |      39039 |     2346 | user2346   |     14831 | user14831   |
> |        6084 |      49920 |     2346 | user2346   |     14704 | user14704   |
> |        6223 |      48014 |     2346 | user2346   |      7386 | user7386    |
> +-------------+------------+----------+------------+-----------+-------------+
> 4 rows in set (0.00 sec)
> 
> # Ordering by a indexed column shows correct results
> SELECT question.id AS question_id, listing.id AS listing_id,
> ub.id AS buyer_id, ub.username AS buyer_name, us.id AS seller_id, 
> us.username as seller_name FROM question, listing, user ub, user us 
> WHERE question.listing_id = listing.id AND question.buyer_id = ub.id AND 
> listing.seller_id = us.id AND (ub.id = 2346 OR us.id = 2346)
> ORDER BY question.id DESC;
> 
> +-------------+------------+----------+------------+-----------+-------------+
> | question_id | listing_id | buyer_id | buyer_name | seller_id | seller_name |
> +-------------+------------+----------+------------+-----------+-------------+
> |        6850 |      12909 |     2346 | user2346   |      4879 | user4879    |
> |        6223 |      48014 |     2346 | user2346   |      7386 | user7386    |
> |        6084 |      49920 |     2346 | user2346   |     14704 | user14704   |
> |        4823 |      39039 |     2346 | user2346   |     14831 | user14831   |
> +-------------+------------+----------+------------+-----------+-------------+
> 4 rows in set (0.00 sec)
> 
> Also, adding an index to the order by column fixes the problem. In other
> testing, adding a combined index:
> 
> ALTER TABLE question ADD INDEX combined (last_modified, listing_id, buyer_id);
> 
> fixed the problem, however, adding:
> 
> ALTER TABLE question ADD INDEX combined (buyer_id, listing_id, last_modified);
> 
> did not.
> 
> >Fix:
> 
> Adding indexes (See "How-To-Repeat")
> 
> >Submitter-Id:
> >Originator: Shane Allen <[EMAIL PROTECTED]>
> >Organization: sell.com
> >MySQL support: none
> >Synopsis:
> >Severity:
> >Priority:
> >Category:    mysql
> >Class:
> >Release:     mysql-4.0.4-beta (Source distribution)
> >Server: /usr/local/bin/mysqladmin  Ver 8.37 Distrib 4.0.4-beta, for pc-linux-gnu on 
>i686
> Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
> This software comes with ABSOLUTELY NO WARRANTY. This is free software,
> and you are welcome to modify and redistribute it under the GPL license
> 
> Server version                4.0.4-beta-log
> Protocol version      10
> Connection            Localhost via UNIX socket
> UNIX socket           /tmp/mysql.sock
> Uptime:                       4 hours 31 min 20 sec
> 
> Threads: 2  Questions: 18  Slow queries: 0  Opens: 229  Flush tables: 1  Open 
>tables: 114  Queries per second avg: 0.001
> >Environment:
> System: Linux aqua.sell.int 2.4.19 #1 SMP Mon Sep 2 15:38:05 CDT 2002 i686 unknown
> Architecture: i686
> 
> Some paths:  /usr/bin/perl /usr/bin/make /usr/bin/gcc /usr/bin/cc
> GCC: Reading specs from /usr/lib/gcc-lib/i386-linux/3.1.1/specs
> Configured with: /mnt/data/gcc-3.1/gcc-3.1-3.1.1ds3/src/configure -v 
>--enable-languages=c,c++,java,f77,proto,objc,ada --prefix=/usr 
>--mandir=/usr/share/man --infodir=/usr/share/info 
>--with-gxx-include-dir=/usr/include/c++/3.1 --enable-shared --with-system-zlib 
>--enable-long-long --enable-nls --without-included-gettext --enable-clocale=gnu 
>--enable-__cxa_atexit --enable-threads=posix --enable-java-gc=boehm --enable-objc-gc 
>i386-linux
> Thread model: posix
> gcc version 3.1.1
> Compilation info: CC='gcc'  CFLAGS='-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs 
>-Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings 
>-Wunused -mcpu=pentiumpro -O3 -fno-omit-frame-pointer'  CXX='gcc'  
>CXXFLAGS='-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W 
>-Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings 
>-Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor 
>-felide-constructors -fno-exceptions -fno-rtti -mcpu=pentiumpro -O3 
>-fno-omit-frame-pointer'  LDFLAGS=''
> LIBC: 
> lrwxrwxrwx    1 root     root           13 Sep  2 17:26 /lib/libc.so.6 -> 
>libc-2.2.5.so
> -rwxr-xr-x    1 root     root      1145456 Aug 14 11:26 /lib/libc-2.2.5.so
> -rw-r--r--    1 root     root      2376426 Aug 14 11:27 /usr/lib/libc.a
> -rw-r--r--    1 root     root          178 Aug 14 11:27 /usr/lib/libc.so
> Configure command: ./configure  --prefix=/usr/local/mysql --enable-assembler 
>--enable-thread-safe-client --with-mysqld-ldflags=-all-static 
>--with-client-ldflags=-all-static --enable-local-infile 
>--with-other-libc=/usr/local/mysql-glibc-2.2.5 --prefix=/usr/local 
>--with-extra-charsets=none --without-innodb --without-isam

-- 
Shane Allen <[EMAIL PROTECTED]>

sell.com : Buy & Sell Anything
http://www.sell.com

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to