[Phpmyadmin-devel] Zoom-search and initial data reading
Piotr Przybylski
piotr.prz at gmail.com
Thu Aug 4 13:25:09 CEST 2011
2011/8/4 Ammar Yasir <ayax88 at gmail.com>:
>
>
> On Thu, Aug 4, 2011 at 2:01 AM, Marc Delisle <marc at infomarc.info> wrote:
>>
>> Ammar Yasir a écrit :
>> >
>> >
>> > On Wed, Jul 27, 2011 at 10:22 PM, Ammar Yasir <ammaryasir.88 at gmail.com
>> > <mailto:ammaryasir.88 at gmail.com>> wrote:
>> >
>> >
>> >
>> > On Wed, Jul 27, 2011 at 3:37 PM, Marc Delisle <marc at infomarc.info
>> > <mailto:marc at infomarc.info>> wrote:
>> >
>> > Ammar,
>> > With Firebug I had a look at the network traffic when I click a
>> > data
>> > point to edit it: I was surprised to see none.
>> >
>> > IMO this is not good: it means that all the columns for all rows
>> > are in
>> > memory, making the browser able to handle far less rows.
>> >
>> > Is there a reason why you are reading the complete rows to
>> > generate the
>> > plot? I expected that you would just read the necessary columns,
>> > then
>> > use AJAX to read a complete row when the user wants to edit it.
>> >
>> > I'm currently working on the edit feature for strings. I'll work on
>> > it after this.
>> >
>> > --
>> >
>> > Implemented this and pushed to my repo. I only send the xField, yField
>> > and dataLabel to the user now.
>>
>> Ammar,
>> you have reduced the amount of data transferred between the PHP level
>> and the Javascript level, by sending less data in the querydata div.
>>
>> Can you also reduce what is transferred between the MySQL server and the
>> web server, by avoiding to generate "SELECT *" in the query generation
>> part, instead selecting only the needed columns?
>>
> That would have been the ideal case but to generate the unique-condition(
> function PMA_getUniqueCondition($handle, $fields_cnt, $fields_meta, $row,
> $force_unique=false) ), I need the complete row. So I cannot do much about
> the query generation on the server side other than putting a limit on the
> number of rows retrieved.
>
It will increase complexity o bit but you can do one of the two:
- select one full row with "SELECT * FROM ... LIMIT 1" (any full row
will do so no ORDER here) and analyze which rows you need by looking
for primary/unique key fields,
- if you have only one table you can analyze SHOW CREATE TABLE
statement and look for PRIMARY KEY and UNIQUE constraints
That way you can do the same filtering that PMA_getUniqueCondition
does when building selection condition. If you find primary key or
unique key you can use only these columns, otherwise SELECT * is the
only way.
--
Piotr Przybylski
More information about the Developers
mailing list