|  | Posted by Steve on 01/18/08 22:54 
"Gary L. Burnore" <gburnore@databasix.com> wrote in message news:fmr8f4$gqf$1@blackhelicopter.databasix.com...
 > On Fri, 18 Jan 2008 15:45:52 -0600, Michael Austin
 > <maustin@firstdbasource.com> wrote:
 >
 >>Steve wrote:
 >>> "Gary L. Burnore" <gburnore@databasix.com> wrote in message
 >>> news:fmr27l$666$4@blackhelicopter.databasix.com...
 >>>> On Fri, 18 Jan 2008 20:51:38 +0100, "Rik Wasmus"
 >>>> <luiheidsgoeroe@hotmail.com> wrote:
 >>>>
 >>>>> On Fri, 18 Jan 2008 20:46:01 +0100, Michael Austin
 >>>>> <maustin@firstdbasource.com> wrote:
 >>>>>
 >>>>>> Gary L. Burnore wrote:
 >>>>>>> [Carolyn's post left intact and comp.lang.php added]
 >>>>>>>  On Fri, 18 Jan 2008 09:27:47 -0500, Carolyn Marenger
 >>>>>>> <cajunk@marenger.com> wrote:
 >>>>>>>
 >>>>>>>> I am new to PHP/MySQL.  I would like some of your thoughts on when
 >>>>>>>> to
 >>>>>>>> use php code and when to use mysql queries.
 >>>>>>>>
 >>>>>>>> In the case I am working on, a learning project for myself, I am
 >>>>>>>> writing a contact management application.  Basically a phone book
 >>>>>>>> with   a many to many relationship between individuals and
 >>>>>>>> organizations, and one to many between individuals/organizations
 >>>>>>>> and
 >>>>>>>> the relevant data such as phone numbers.
 >>>>>>>>
 >>>>>>>> I am working on a page which lists all the individuals.  I have a
 >>>>>>>> horizontal listing at the top containing all the unique surname
 >>>>>>>> initials, which link to headings as the list progresses.  ie:
 >>>>>>>>
 >>>>>>>> -----
 >>>>>>>> A B N
 >>>>>>>>
 >>>>>>>> A
 >>>>>>>>   Abnew, Georgina
 >>>>>>>>   Adwit, Dave
 >>>>>>>>
 >>>>>>>> B
 >>>>>>>>   Biltmore, Garth
 >>>>>>>>
 >>>>>>>> N
 >>>>>>>>   Niles, Paulina
 >>>>>>>>   Norton, Alicia
 >>>>>>>> -----
 >>>>>>>>
 >>>>>>>> Currently, I have MySQL select all the unique initials and process
 >>>>>>>> that into an array.  The array is dumped to the screen as the index
 >>>>>>>> at
 >>>>>>>> the top.  Next the array is used for MySQL selects of surnames with
 >>>>>>>> that initial.
 >>>>>>>>
 >>>>>>>> In the above example that would result in 6 MySQL queries.
 >>>>>>>> Assuming
 >>>>>>>> only English based names, no foreign character sets, no numbers, no
 >>>>>>>> symbols, that would result in a maximum of 27 queries.
 >>>>>>>>
 >>>>>>>> I could rewrite the PHP code to select all the names in a single
 >>>>>>>> query
 >>>>>>>> .  Then use PHP to process the list to make the index, headings,
 >>>>>>>> and
 >>>>>>>> list the names.
 >>>>>>>>
 >>>>>>>> For a small private phone book, either way, so what - big deal.  In
 >>>>>>>> a
 >>>>>>>> public database, there could conceivably be a large amount of
 >>>>>>>> network
 >>>>>>>> overhead processing the Mysql queries.  However, from the reading I
 >>>>>>>> have been doing, MySQL is very fast, PHP being interpreted, may end
 >>>>>>>> up
 >>>>>>>> being slower.
 >>>>>>>>
 >>>>>>>> So, anyone care to enlighten me?  I would love your thoughts,
 >>>>>>>> comments, experiences.
 >>>>>>>>
 >>>>>>>  I've added the crosspost because I believe this is an extremely
 >>>>>>> good
 >>>>>>> question that doesn't get the attention it deserves.  You should get
 >>>>>>> a
 >>>>>>> lot of opinions on this.
 >>>>>>>  Here's mine:
 >>>>>>>  One query to sql is better than 6 and it's certainly better than
 >>>>>>> 27.
 >>>>>>> PHP could process the list quite quickly.   If your DB is on a
 >>>>>>> different server than your web site (good practice to keep your DB
 >>>>>>> behind a firewall>, then you're crossing your network up to 27 times
 >>>>>>> instead of just once.
 >>>>>> I would agree that this may work in this one situation, however, when
 >>>>>> those datasets get too large - with large numbers of request for that
 >>>>>> data, you can do more harm than good.
 >>>>>>
 >>>>>> I recently fixed some code that was causing over 400MB per request to
 >>>>>> be
 >>>>>> returned for processing - and literally crippled an IBM mainframe. to
 >>>>>> the point that once we shut off the web app - it took the frame more
 >>>>>> than 7 hours to catch up on it's batch processing. One of those -
 >>>>>> let's
 >>>>>> let the application process the data. Again, in a very small number
 >>>>>> of
 >>>>>> situations this  **may** be okay, in others, it can be crippling.
 >>>>>>
 >>>>>> Things to remember:
 >>>>>> 1) KNOW YOUR DATA  - what it is and how much you have.
 >>>>>> 2) KNOW YOUR "customer" - how many, how they might use the data.
 >>>>>> 3) Your "customer" will ALWAYS use your application in ways you never
 >>>>>> dreamed of...
 >>>>> 4) Never ask for more data then you're really sure you're going to
 >>>>> use.
 >>>>> The numerous times I've seen 'SELECT *' in production code...
 >>>> Right.  As I read her example, she planned on using the data, but
 >>>> parsing it out up to 27 ways.   (& btw, we all know how little it
 >>>> takes to bog an IBM mainframe) :)
 >>>
 >>> can you say, as400? :^)
 >>>
 >>>
 >>Sorry, but an AS400 is a LONG way from being a mainframe... (ie 360/390)
 >
 > Maybe he meant it only takes an as400 to bog a mainframe?  Heh.
 
 exactly. :)
  Navigation: [Reply to this message] |