Tag Archives: join

Relational Database System (RDBMS) 運作的方式

在「How does a relational database work」這篇文章用了很長的篇幅講「資料庫如何把 SQL query 轉換為實際的操作」: I’ll focus on what I think is essential: the way a database handles an SQL query. 資料庫也是人寫出來的,資料結構與演算法也是人設計出來的。你現在手上有資料,要怎麼把 SQL query 變成有效率的查詢操作行為,就是這篇文章在描述的。 看起來連 JOIN 的機制也講了不少...

Posted in Computer, Database, Murmuring, Software | Tagged , , , , , , , | Leave a comment

MySQL 在處理 GROUP BY 時選擇 index 的效率問題

Percona 的「Speed up GROUP BY queries with subselects in MySQL」這篇講了 MySQL 在處理 GROUP BY 的效率問題。 舉原文的例子,也就是這樣的 SQL query:(我把 command 都改成大寫,其他部份都改成小寫) SELECT a.name, SUM(a.count) a_sum, AVG(a.position) a_avg, b.col1, c.col2, d.col3 FROM a JOIN b ON (a.bid = b.id) JOIN c ON … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Software | Tagged , , , , , , , , , | 1 Comment

MySQL 的 SQL Query...

Percona 的 blog 上跑出一篇「What kind of queries are bad for MySQL?」,分析哪些 SQL query 對 MySQL 的效能不好... 內容相當偏激,然後在 comment 引起討論... (文章作者反而就跑去休息了) 舉例來說,他認為只要有 JOIN 就算是 bad query。作者舉了這樣的 SQL query 為例: SELECT t2.value FROM t2 JOIN t1 ON (t1.id=t2.tid) WHERE t1.orderdate=NOW() 應該要被展開成: SELECT … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Network, Software | Tagged , , , , | Leave a comment

MySQL 內 JOIN 的應用...

「Common use cases for the MySQL Join statement」這篇給的範例與把 MySQL 上常用到的幾種 JOIN 提出來分析,包括 index 與 explain。另外在「Managing hierarchical data with MySQL」也提到了要怎麼處理階層式資料。 對於 JOIN 大概分幾個階段: 在使用 MyISAM 的時候會儘量避免 JOIN,因為當 SQL 執行時間久的時候會有好幾個 table 同時卡住無法寫入。 改用 InnoDB 後一直用 JOIN,不論是報表或是 web SQL query,造成 CPU bound (雖然不是 … Continue reading

Posted in Computer, Database, Murmuring, MySQL, Network, Software | Tagged , , , , , , , | Leave a comment