Dear Don, KH Chiu, List, P.S (Chiu): Proceed as is in INSERT VALUES (),()...N?
Oops! What about futured stored procedures in Mysql 5.x ? Anyway... Yes, there is a problems with error handling and proceeding but when you use INSERT ... VALUES (),().. (for example 5 rows and after 3th rows mysql fail to proceed with last 2, these 3 rows will *not* be removed from db i.e INSERT will succeed particualry.. is it a bug in mysql?) Moreover in all packets (batch) operations (not only in database/mysql sense) when some of queries fail..all other queries in the packet fails too. Of course I thought about problem "how to return multiple results" for example in two or more selects... however I'm not familar with mysql core.. :( BUT if mysql team release "cache" for futured operations..no,no.. AMD,INTEL processors do exaly the same to speed up execution of CPU operations... So if application *tells* to mysql that it will proceed two select queries to same table, mysql may "execute" second operation in advance: FUTURE - imaginary SQL statement: FUTURE select_1 * from table where..., select_2 * from table where... So when Mysql execute select_1: select * from table where... it *may* proceed/cache select_2 Example: $sth = $dbh->prepare("FUTURE select * from table where id=52 and name='some', select * from table where id=23 and email='[EMAIL PROTECTED]'"); ... $sth->execute(); ... # Execute first query $sth = $dbh->prepare("select * from table where id=52 and name='some'"); $sth->execute(); ... # Execute second query $sth = $dbh->prepare("select * from table where id=23 and email='[EMAIL PROTECTED]'"); $sth->execute(); So Mysql *may* optimize these two queries; to test conditions, but: to execute them separately. Of course when error occure in first query Mysql will *not* be able to optimize them... Moreover, if Mysql proceed 1/2 of DB file with first query (for example restricted with "LIMIT"), Mysql still may do a particular cache/optimizations. Imaginary sql statement "FUTURE" may be used for other optimizations too! The main idea was: "In fact I'm not talking only about 'select'-s but any tables *examination*/*traverse* (i.e where clauses etc..), so queries like these could be also speed up" I know you are a clever guys, so *Mysql* will obtain the MAXIMUM from that idea ;-) Here I will answare to question about multi-user nature of Mysql: Due Mysql reads only once from database (hard disk) i.e. proceed two queries (conditions) for single row read, there will *not* be penalty for disk seeks/read, because when given row is proceeded it *should* be read in memory the whole. However in case when you apply "bulk update" to different tables the things getting complicated :(, but with FUTURE-like statement there are still possibilities for optimizations :) > > On 23-Feb-2003 Julian wrote: > > Speed improvement with packet proceeding!? > > > > 1. Packet proceeding: > > > > I'm not quite sure is it possible with Mysql but it could be "easy" to > > > be implemented. > > For example: > > > > select * from table where id=52 and name='some' > > select * from table where id=23 and email='[EMAIL PROTECTED]' > > > > these two queries select row(s) from table 'table' which means that > > these two queries could be tested simultaneously, so database file will > > > be proceed only once. > > What about the case where one (or both) selects fail? > > And how would the application tell that there were multiple > rows where id=23 and email='[EMAIL PROTECTED]' ? > > If you *know* that these two rows exist and unique then: > > SELECT a.*,b.* from table as a, table as b > WHERE a.id=52 and a.name='some' AND > b.id=23 and b.email='[EMAIL PROTECTED]' > > would do the same thing. > > <snipage> > > > > > In fact I'm not talking only about 'select'-s but any tables > > examination/traverse (i.e where clauses etc..), so queries like these > > > could be also speed up: > > > > update table set data='test' where name='some' > > select * from table where id=10 > > > > What would be the sensible error message if your update failed > but your select succeeds ? > > What would be the expected value of mysql_numrows() ? > > And what if there are multiple rows where id=10 ? > > <snipage> > > > 2. Bulk update/delete etc.. > > > > Take a look at this update query (not implemented.. yet!) > > update table1 set column=value,... where clause limit #, update table2 > > > set .... > > (or delete from table1 where clause limit rows, delete from table2 > where > > clause...) > > > > The same question: How would a program tell which statement failed? > > <snip again> > > > Have I a good point here? Any ideas and discussion about these > > suggestions? > > You'll need to rethink the failure modes. > What you're suggesting might be useful in certain special case(s) > but badly fails the general case. > > Regards, > -- > Don Read [EMAIL PROTECTED] > -- It's always darkest before the dawn. So if you are going to > steal the neighbor's newspaper, that's the time to do it. > (53kr33t w0rdz: sql table query) > __________________________________________ 12MB-POP3-WAP-SMS-AHTИCПAM--TOBA-E-mail.bG ------------------------------------------ HOB БEЗПЛATEH AДPEC - http://mail.bg/new/ ------------------------------------------ --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php