On Wed, Aug 12, 2009 at 11:41 AM, Ralph Deffke <ralph_def...@yahoo.de>wrote:

> what are telling the logs on that code?
>
> <?php
>
> $link = mysql_connect( /* settings */);
> mysql_select_db( 'database', $link);
> $result = mysql_query( 'SELECT * FROM <table>', $link );
> $result = mysql_query( 'SELECT * FROM <anothertable>', $link );
> $result = mysql_query( 'SELECT * FROM <anothertable>', $link );
> $result = mysql_query( 'SELECT * FROM <anothertable>', $link );
> $result = mysql_query( 'SELECT * FROM <anothertable>', $link );
> $result = mysql_query( 'SELECT * FROM <table>', $link );
>
> would be interesting to see.
>
> I personaly woudn't spend the time on logs, a computer is logical, I try to
> be logical, and I would
> try to create code which is logical speedy. I expect the database kernel
> programmer the same.
>
> I think then we are on the secure side.
>
> ralph_def...@yahoo.de
>
>
> ------------------------------
> *Von:* Martin Scotta <martinsco...@gmail.com>
> *An:* Ralph Deffke <ralph_def...@yahoo.de>
> *CC:* php-general@lists.php.net
> *Gesendet:* Mittwoch, den 12. August 2009, 16:18:01 Uhr
> *Betreff:* Re: [PHP] Re: Is select_db necessary?
>
> Wed, Aug 12, 2009 at 10:37 AM, Ralph Deffke <ralph_def...@yahoo.de> wrote:
>
>> I agree totally, are we not dicussing speed issues all the time? and then
>> we
>> recommend a code doing an unessesary job on every call?
>>
>> an ANSI selct db in the sql forces any database to run the internal select
>> db because there would be no check if the databse is the current one.
>> because, databasedevelopers can espext some smartness of us, the
>> programmers. its a lot off stuff to do for the database to select a
>> database. for shure, the database leafs that IN OUR hand to avoid to force
>> time consuming server resources.
>>
>> ralph
>> ralph_def...@yahoo.de
>>
>> "Colin Guthrie" <gm...@colin.guthr.ie> wrote in message
>> news:h5ug1h$tj...@ger.gmane.org...
>> > 'Twas brillig, and Jay Blanchard at 12/08/09 13:53 did gyre and gimble:
>> > > Jay Blanchard wrote:
>> > >> SELECT a.foo, a.bar
>> > >> FROM myDatabase.myTable a
>> > >> WHERE you set other conditions here
>> > >>
>> > >> All that is required is that you establish a connection to a server.
>> > >
>> > > If I recall correctly, this will cause issues with replication in
>> > > MySQL... insofar as you perform amodifying query.
>> > > [/snip]
>> > >
>> > > You're correct with regards to queries that modify on replicated
>> > > systems. If all you're doing is gathering data then this will work
>> just
>> > > fine, is somewhat self-documenting (especially in lengthier code
>> > > containers), and very flexible. It also leaves the selection in the
>> > > database's hands, and as we almost always say, "let the database do
>> the
>> > > work when it can".
>> >
>> > I'm interested to know why you consider this to be very flexible and how
>> > this leaves the selection in the database's hands?
>> >
>> > If I were to implement this and they try some destructive testing/demo
>> > on a sacrificial database, I'd have to use a whole other server instance
>> > (as all the queries would hardcode in the db name).
>> >
>> > Is it not more flexible if you omit the table name in every single query
>> > and specify it once in your bootstrap/connection code? Thus doing tests
>> > on other dbs etc. is a pretty simple switch of the connection code.
>> >
>> > Also telling the db engine what database you want to use in every query
>> > is not, IMO, leaving the selection in the the database's hands.
>> >
>> > Just curious as to the rationale here :)
>> >
>> > Col
>> >
>> >
>> >
>> >
>> > --
>> >
>> > Colin Guthrie
>> > gmane(at)colin.guthr.ie
>> > http://colin.guthr.ie/
>> >
>> > Day Job:
>> >    Tribalogic Limited [http://www.tribalogic.net/]
>> > Open Source:
>> >    Mandriva Linux Contributor [http://www.mandriva.com/]
>> >    PulseAudio Hacker [http://www.pulseaudio.org/]
>> >    Trac Hacker [http://trac.edgewall.org/]
>> >
>>
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>
> <?php
>
> $link = mysql_connect( /* settings */);
> mysql_select_db( 'database', $link);
> $result = mysql_query( 'SELECT * FROM <table>', $link );
>
> What SQL was sent to the database?
>
> Looking at bin logs I've found this.
>
> 1. use database => mysql_select_db
> 2. use database: SELECT * FROM <table> => mysql_query
>
> The DB is usually a common bottle-neck for most applications.
> You can have several webservers, but can't do that with the DB... of
> course, you can have multiples slaves but just 1 master.
>
> is this the best way to send queries?
> What's the better and faster way?
>
> --
> Martin Scotta
>
>
Mysql only stores the SQL in the log when the query affect something in the
DB.
So, SELECTS do not appear in the binlog.

That said, this is the script I have runned

$link = mysql_connect( /*settings*/ );
mysql_select_db('devtool', $link);

mysql_query( 'TRUNCATE TABLE dev_activities', $link );
mysql_query( 'TRUNCATE TABLE dev_files', $link );
mysql_query( 'INSERT INTO dev_activities VALUES (1, 1)', $link );
mysql_query( 'INSERT INTO dev_files VALUES (1, 1)', $link );
mysql_query( 'INSERT INTO dev_activities VALUES (2, 2)', $link );
mysql_query( 'INSERT INTO dev_files VALUES (2, 2)', $link );

and this is the binglog's entries

use `devtool`; TRUNCATE TABLE dev_activities
use `devtool`; TRUNCATE TABLE dev_files
use `devtool`; INSERT INTO dev_activities VALUES (1, 1)
use `devtool`; INSERT INTO dev_files VALUES (1, 1)
use `devtool`; INSERT INTO dev_activities VALUES (2, 2)
use `devtool`; INSERT INTO dev_files VALUES (2, 2)

-- 
Martin Scotta

Reply via email to