 <p>When you look here at the <a href="http://mysql-python.sourceforge.net/MySQLdb.html#cursor-objects" rel="nofollow noreferrer">mysqldb documentation</a> you can see that they implemented different strategies for cursors. So the general answer is: it depends.</p> <p>Edit: Here is the <a href="http://mysql-python.sourceforge.net/MySQLdb-1.2.2/" rel="nofollow noreferrer">mysqldb API documentation</a>. There is some info how each cursor type is behaving. The standard cursor is storing the result set in the client. So I assume there is a overhead if you don't retrieve all result rows, because even the rows you don't fetch have to be transfered to the client (potentially over the network). My guess is that it is not that different from postgresql.</p> <p>When you want to optimize SQL statements that you call repeatedly with many values, you should look at cursor.executemany(). It prepares a SQL statement so that it doesn't need to be parsed every time you call it:</p> <pre><code>cur.executemany('INSERT INTO mytable (col1, col2) VALUES (%s, %s)', [('val1', 1), ('val2', 2)]) </code></pre>