Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Danh mục đệ quy với một truy vấn duy nhất?

Nếu cây không quá lớn, bạn có thể chỉ cần xây dựng cây bằng PHP bằng cách sử dụng một số tham chiếu thông minh.

$nodeList = array();
$tree     = array();

$query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
while($row = mysql_fetch_assoc($query)){
    $nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
}
mysql_free_result($query);

foreach ($nodeList as $nodeId => &$node) {
    if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
        $tree[] = &$node;
    } else {
        $nodeList[$node['parent']]['children'][] = &$node;
    }
}
unset($node);
unset($nodeList);

Điều này sẽ cung cấp cho bạn cấu trúc cây trong $tree với những đứa trẻ trong children tương ứng -mạch.

Chúng tôi đã thực hiện điều này với các cây khá lớn (>> 1000 mục) và nó rất ổn định và nhanh hơn rất nhiều so với thực hiện các truy vấn đệ quy trong MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng tự động hóa để tăng tốc độ kiểm tra phát hành trên Galera Cluster With ClusterControl

  2. Tính toán decile trong MySQL dựa trên tổng số

  3. Điều chỉnh hiệu suất truy vấn MySQL

  4. MySQL Master để Master Replication

  5. Cách thay thế khóa chính của Django bằng một số nguyên khác duy nhất cho bảng đó