*** 451,634 **** NOT EXISTS remarks (off topic) -> UnsupportedSqlRemarkOffTopic - Sqlite is finally a database product that values performance and minimal - footprint (disk and memory) - above a trashcan strategy that would add whatever feature to make the result - so-called 'feature rich', - say, a bloated piece of software. Therefore, I would vehemently reject all - additions listed above, except - for one. It's quite difficult to obtain the result for a correlated 'NOT - EXISTS' subquery in any alternative - way; which is the choice way to determine a subset of data that doesn't satisfy - criteria contained in - another table. - - In my experience I have found 'NOT EXISTS' (or is it 'NOT IN') to be - extraordinarly slow. Being that - SQLite provides 'EXCEPT' the much faster construct can be used to the same end - (at least it was - faster with Oracles's equvalent: 'MINUS', to wit: - - select name,addr from employee where id not in (select id from sales) - - becomes - - select name,addr from employee where id in ( - select id from employee - except - select id from sales - ) - - - -- Are you calling Oracle 'a bloated piece of software'?. LOL. I would love to - see a comparison of Oracle - and SQLite (latest stable or bleeding edge SQLite version Vs Oracle 10g). I - would love it. [This - comparison idea is as valid as comparing a novel to a short story.] Anyway, - SQLite seems a lil' database - engine for lil' works. Sorry, not enough for me :). -- Why would anyone compare - Oracle to sqlite other - than to say "can you add support for this Oracle syntax to make migration - between them easier"? -- - Someone might - mistakenly compare Oracle - to SQLite because they fail to comprehend that the two products solve - very different problems. - - *: Up to this moment I thought that Postgree was smallest possible free DB - engine (since MySQL is - *NOT* free), so if you are looking for something to distribute along with your - application, SQLite seem - to win against 10g, MySQL, Postgree, or whatever (by Makc). - Just to be - awkward, what about - berkelydb etc? And when you say free you mean free of restrictions don't you - (rather than Free - software)? -- Berkeley DB does not include SQL support. - - *: To above paragraph. Sometimes it is better pay few hundreds of bucks (just - few hours of - my work rate) and get much more powerful commercial solution which is royalty - free. For example I - very love Valentina database - (http://www.paradigmasoft.com). Valentina beats - anything in 10-100+ - times, especially on big dbs . It is not expensive, royalty free. Really full - SQL92, yet they have cool - Object-Relational features. - - *: To above paragraph: 'Valentina beats anything in 10-100+ times'. Ok, 10-100+ - times of WHAT?. - RAM Usage?, CPU Usage?, CPU Cycles?, CPU Count?, Consistent Gets?, Concurrent - Users?, Concurrent - Transactions?, Parses?, Executes?, Fetches?, Recursive Calls?, Physical Reads?, - Documentation? ... If you - don't have arguments based on real data in a production environment with real - data load (users & - transactions) your comment is useless. Benchmark it, prove it and then show us - your results, not your - 'thoughts'. - - *: Let me answer. I have talk about speed :-) About time of queries execution - in seconds. Example. I - have bench Table with million records. 10 fields of all types. 100MB size. Next - query "SELECT DISTINCT - * From T1" Valentina do in 1.7 seconds, SqlLite in 280 seconds. Difference 180 - times. Or query: - "SELECT * FROM T1 ORDER BY fld_byte, fld_varchar Desc" Valentina do in 1.99 - seconds, SqlLite in 115 - seconds. Difference 55 times. This is just single table queries. I do not - mention joins on 3-5-7 - tables with, with GROUP BY, HAVING, ... More, if to make database in 10 - million records, so db - grow to 1Gb the you will see even better Valentina wins. If you want get - information about real - production power then just go to their users testimonials page and read quotes - starting from 1998 year - it seems. - - *: As to the above - those numbers and the queries are meaningless without the - database schema and - the source used to conduct the test. If you'd like to lend some credibility to - your assertions, you need - to provide a link where that information can be downloaded or viewed. - - *: (1) About the 'speed results'. Speed?, are you talking about speed?, ouch. I - can give you the fastest - queries on Oracle with 'FIRST_ROWS' hints, i can tweak to the death some - internal parameters to give - users their results on a fraction of a second, heck, i can even cheat with my - indexes to achieve this - results ... but know what?: these results don't mean anything. Like yours. What - kind of value has a - querie that executes on 2 seconds and uses 50% of CPU if another one do it on - 10 seconds and uses - only 10% of CPU?. Do you know how to answer to this question?. Easy: it - depends. Always depends. - C,mon man, don't pretend to be a Lord Sith on the first day, complete your - Padawan lessons before ;). - - *: (1, continued) How many parses and fetches are generating your queries on - your Database?, what - kind of 'stress' level are suffering your disks?, and your CPU?, what about the - locks?, and the waits?, are - you doing 'implicit conversions' of the SQLite side?, are you using the same - amount and cardinality of - data on SQLite?, are you using some kind of index on SQLite?, do you know how - to create indexes on - SQLite?, WHY are you querying against a table and not against a view?, do you - know something about - views and database schemas?, do you have the ER diagram of both schemas in - order to have - 'something' to show us?, do you have REAL benchmarks that we could tests on our - environments? ... - etc. - - *: (1, continued) HOW COULD YOU (sorry for the caps) guide me to the 'users - testimonials page' in - order to check real data load (on the 'wide' meaning) on production - environments?. Are you kidding - me?. Oh, god!. This is like "hey, i would like to know how your Database - behaves on a 3000 concurrent - users environment with 2000 transactions per second. I am mainly interested on - the cluster solution - that you could give me and the efficient ways to maximize CPU, RAM and HD - resources" and your - answer being "yeah, go to www.nice-database.com/testimonials.htm and read my - happy-customers - histories". LOL. Are you serious?. - - * Ha-Ha-Ha. Be sure I am not dummy users, so I know answers to all questions - you asks. I have more - than 15 years of db experience. All your blames that I have not take into - account something are really - foolish! Because let me repeat: I have made the same table with the same fields - with the same data in - records, and run the same queries on the same hardware in the same *clean* - environment (no other - apps was run to eat CPU or disk). And I have not use any tricks like - "FIRST_ROWS". Both dbs was on - default parameters. You still claim that this is not fair bench ???!!! Tell - this to somebody else. - - *: Well, if you (a DBA with 15 years of experience) can't show us a 'miserable' - execution plan or a report with timed statistics (like Oracle's Tkprof), then, - my friend, your 15 years of work as a DBA has been totally and dramatically - wasted. Sincerelesy, i can't imagine any senior DBA (heh, even an Access - 'Senior DBA' if this job exists, by the way) posting on forums, wikis or blogs - things like 'hey, this RDBMS is 100x faster than yours' or 'hey, the - testimonials page is where you will find the answers of all your tuning and - performance related questions'. Sorry, i just can't imagine it. Anyway, - discussion ended for my side. Sorry to all SQLite users & developers for these - non-sense paragraphs. - - - I wonder how useful these "remarks" are... - - They don't really pertain to the question of how well SQLite supports either - standard or "extended" SQL features; I'd suggest that if the participants in - this debate want to continue it, they create a new wiki page specifically for - it; copy everything not related to feature support over to it, and delete it - from this page. - What about Apache Derby? It uses the Apache 2.0 license and is easy to embed in Java applications (http://db.apache.org/derby/). -- See SqliteVersusDerby --- 451,456 ----