Package: phpmyadmin
Version: 4:3.4.11.1-2
Severity: wishlist
Tags: upstream

A query generally results in a number of rows which don't fit in a single page (maximum 30 
rows by default). Often the user will browse through the result set. phpMyAdmin allows this 
with a menu at the top of the page which allows to select the results page desired, or to 
request a custom range ("Show:). Sometimes, another element offering a preset range 
appears ("Show all"). This button never showed by default, but following, #658402, 
it does for tables of less than 150 rows (by default). The reason why it doesn't show for 
larger tables is to avoid performance issues with users requesting huge resultsets.

This ticket asks to go further and to show "Show all" by default regardless of 
the number of rows in the table, to adress 2 issues:

1. Showing Show all only in some cases will confuse new users.
2. It is often desirable to show more than 150 rows, and very often reasonable 
in terms of performance.

Issue 1 is about consistency. Here are some excerpts from user interface guides:

 To give users a conceptual sense of stability, the interface provides
 a clear, finite set of objects and a set of actions to perform on
 those objects. For example, when a menu command doesn't apply to a
 selected object or to the object in its current state, the command is
 dimmed rather than omitted.

https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/HIPrinciples/HIPrinciples.html#//apple_ref/doc/uid/TP30000353-TP6

   * *Reconsider disabled controls.* Disabled controls can be hard to
     use because users literally have to deduce why they are disabled.
     Disable a control when users expect it to apply and they can
     easily deduce why the control is disabled. Remove the control when
     there is no way for users to enable it or they don't expect it to
     apply, or leave it enabled, but provide an error message when it
     is used incorrectly.
       o *Tip:* If you aren't sure whether you should disable a control
         or provide an error message, start by composing the error
         message that you might provide. If the error message contains
         helpful information that target users aren't likely to quickly
         deduce, leave the control enabled and provide the error.
         Otherwise, disable the control.



http://msdn.microsoft.com/en-us/library/aa511331.aspx#controls

Regarding issue 2, I was able to list over 250 rows from a table in less than 5 
seconds, with an average server. Even Wikipedia, which goes through the 
Internet, offers to display 500 edits at a time in page histories.

2 options exist:

 * Always allow using Show all
 * Always display Show all, but disable it with an explanatory tooltip if the 
total number of rows is deemed excessive

Both of these options would address issue 1. The second option would be safer, 
preventing slow requests. But the first option would address issue 2 and could 
also be made equally safe by adding a popup requesting confirmation beyond a 
certain number of rows (for example, 150).

Even though I'm suggesting to use Show all, what I ultimately want is just to 
optimize showing more rows. I would probably not use Show all on a 10000+ 
records table. There are other ways to optimize this case, like quick tools to 
show 5 or 10 times more rows. Dynamically fetching more rows when one reaches 
the last - like Sybase's Interactive SQL does - would be another interesting 
approach.

This ticket ended up overlapping way too much with a ticket I filed upstream 
which also requests request optimizations for table browsing: 
https://sourceforge.net/p/phpmyadmin/feature-requests/1434/

Reply via email to