Tableau uses array fetch of a forward only cursor, to read the data as quickly as possible.
Unfortunately the driver's implementation of array fetch causes the MySQL library to traverse its list of rows from the beginning, every time a new block is fetched. This becomes O(n^2) in the number of rows.
Since a user of a forward only cursor is always going to read the next block, the driver should be able to cache the cursor for the last row in the block and then move onto the next without starting again at the beginning.
Turning off Tableau's use of array fetch avoids this problem, but means more driver overhead since SQLFetch now must be called for every row.
Tableau uses array fetch of a forward only cursor, to read the data as quickly as possible.
Unfortunately the driver's implementation of array fetch causes the MySQL library to traverse its list of rows from the beginning, every time a new block is fetched. This becomes O(n^2) in the number of rows.
Since a user of a forward only cursor is always going to read the next block, the driver should be able to cache the cursor for the last row in the block and then move onto the next without starting again at the beginning.
Turning off Tableau's use of array fetch avoids this problem, but means more driver overhead since SQLFetch now must be called for every row.