亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL復(fù)雜查詢優(yōu)化實(shí)戰(zhàn)之從多表關(guān)聯(lián)到子查詢的性能突破(全流程)

 更新時(shí)間:2025年06月26日 09:12:33   作者:程序員岳彬  
MySQL復(fù)雜查詢性能優(yōu)化方法,涵蓋JOIN順序調(diào)整、子查詢轉(zhuǎn)JOIN、復(fù)合索引設(shè)計(jì)、分批次處理大表關(guān)聯(lián)、統(tǒng)計(jì)信息更新等策略,強(qiáng)調(diào)通過(guò)執(zhí)行計(jì)劃分析定位瓶頸,本文給大家介紹MySQL復(fù)雜查詢優(yōu)化實(shí)戰(zhàn)之從多表關(guān)聯(lián)到子查詢的性能突破,感興趣的朋友一起看看吧

一、復(fù)雜查詢性能瓶頸分析與優(yōu)化框架

在實(shí)際業(yè)務(wù)場(chǎng)景中,MySQL查詢性能問(wèn)題往往源于多表關(guān)聯(lián)(JOIN)和子查詢的不當(dāng)使用。以電商訂單系統(tǒng)為例,當(dāng)需要查詢"近30天內(nèi)購(gòu)買過(guò)電子產(chǎn)品的用戶及其訂單詳情"時(shí),若直接使用嵌套子查詢或無(wú)序JOIN,可能導(dǎo)致查詢耗時(shí)從毫秒級(jí)飆升至秒級(jí)。這類問(wèn)題的核心矛盾在于:數(shù)據(jù)庫(kù)引擎對(duì)復(fù)雜查詢的執(zhí)行計(jì)劃生成存在天然局限性,需要通過(guò)人為干預(yù)優(yōu)化執(zhí)行路徑。

優(yōu)化的核心框架可拆解為三步:

  1. 定位性能痛點(diǎn):通過(guò)EXPLAIN分析執(zhí)行計(jì)劃,識(shí)別Using filesort、Using temporary等低效操作
  2. 重構(gòu)查詢結(jié)構(gòu):將子查詢轉(zhuǎn)換為JOIN、調(diào)整表關(guān)聯(lián)順序、拆分復(fù)雜查詢
  3. 索引與統(tǒng)計(jì)信息優(yōu)化:建立復(fù)合索引、更新表統(tǒng)計(jì)信息

二、多表關(guān)聯(lián)查詢的優(yōu)化策略與實(shí)戰(zhàn)

1. JOIN順序優(yōu)化:基于成本估算的表關(guān)聯(lián)策略

MySQL的JOIN執(zhí)行遵循"嵌套循環(huán)連接"(Nested Loop Join)機(jī)制,驅(qū)動(dòng)表的選擇直接影響IO次數(shù)。以訂單表、用戶表、商品表的三表關(guān)聯(lián)為例:

-- 原始查詢:錯(cuò)誤的JOIN順序?qū)е氯頀呙?
EXPLAIN SELECT o.order_id, u.username, p.product_name
FROM orders o
JOIN users u ON o.user_id = u.user_id
JOIN products p ON o.product_id = p.product_id
WHERE o.create_time > '2025-05-20' AND p.category = '電子產(chǎn)品';
-- 優(yōu)化后:先過(guò)濾再關(guān)聯(lián),以orders表為驅(qū)動(dòng)表
EXPLAIN SELECT o.order_id, u.username, p.product_name
FROM orders o
-- 先對(duì)orders表建立時(shí)間索引
WHERE o.create_time > '2025-05-20'
JOIN users u ON o.user_id = u.user_id
JOIN products p ON o.product_id = p.product_id AND p.category = '電子產(chǎn)品';

執(zhí)行計(jì)劃對(duì)比
優(yōu)化前:orders表掃描10萬(wàn)行,users和products表均全表掃描,總IO約20萬(wàn)次
優(yōu)化后:orders表通過(guò)索引過(guò)濾至1萬(wàn)行,users和products表通過(guò)主鍵關(guān)聯(lián),總IO降至1.2萬(wàn)次

2. 復(fù)合索引與JOIN條件優(yōu)化

當(dāng)JOIN條件涉及多個(gè)字段時(shí),復(fù)合索引的順序至關(guān)重要。以訂單明細(xì)表與商品表的關(guān)聯(lián)為例:

-- 表結(jié)構(gòu)
CREATE TABLE order_items (
  order_id INT,
  product_id INT,
  quantity INT,
  -- 錯(cuò)誤的索引順序:未按JOIN條件順序創(chuàng)建
  KEY idx_order_product (order_id, product_id)
);
CREATE TABLE products (
  product_id INT PRIMARY KEY,
  category VARCHAR(50),
  price DECIMAL(10,2)
);
-- 低效查詢:JOIN條件與索引順序不一致
EXPLAIN SELECT oi.order_id, p.category
FROM order_items oi
JOIN products p ON oi.product_id = p.product_id AND oi.order_id = 12345;
-- 優(yōu)化方案:重建復(fù)合索引并調(diào)整JOIN條件順序
ALTER TABLE order_items DROP KEY idx_order_product;
ALTER TABLE order_items ADD KEY idx_product_order (product_id, order_id);
-- 優(yōu)化后查詢:條件順序與索引一致
EXPLAIN SELECT oi.order_id, p.category
FROM order_items oi
JOIN products p ON oi.product_id = p.product_id AND oi.order_id = 12345;

索引原理解析
復(fù)合索引idx_product_orderproduct_idorder_id排序,當(dāng)查詢條件為product_id = ? AND order_id = ?時(shí),可直接通過(guò)B+樹(shù)定位,避免回表查詢。而原索引idx_order_product在查詢時(shí)只能利用order_id過(guò)濾,product_id條件需二次掃描。

3. 大表JOIN的分片處理

當(dāng)關(guān)聯(lián)表數(shù)據(jù)量超過(guò)千萬(wàn)級(jí)時(shí),直接JOIN可能導(dǎo)致內(nèi)存溢出。可采用"分批次JOIN"策略,以日志表與用戶表的關(guān)聯(lián)為例:

-- 原始查詢:千萬(wàn)級(jí)日志表與百萬(wàn)級(jí)用戶表直接JOIN
EXPLAIN SELECT l.user_id, u.username, COUNT(l.id) as log_count
FROM user_logs l
JOIN users u ON l.user_id = u.user_id
WHERE l.log_time > '2025-01-01'
GROUP BY l.user_id;
-- 優(yōu)化方案:分批次查詢用戶ID再關(guān)聯(lián)
-- 1. 先查詢符合條件的用戶ID范圍
SELECT user_id INTO @min_id FROM users ORDER BY user_id LIMIT 1;
SELECT user_id INTO @max_id FROM users ORDER BY user_id DESC LIMIT 1;
-- 2. 定義批次大小
SET @batch_size = 10000;
SET @current_id = @min_id;
-- 3. 循環(huán)分批次查詢
CREATE TEMPORARY TABLE temp_results (
  user_id INT,
  username VARCHAR(50),
  log_count INT
);
WHILE @current_id < @max_id DO
  INSERT INTO temp_results
  SELECT l.user_id, u.username, COUNT(l.id)
  FROM user_logs l
  JOIN users u ON l.user_id = u.user_id
  WHERE l.log_time > '2025-01-01'
  AND u.user_id BETWEEN @current_id AND @current_id + @batch_size - 1
  GROUP BY l.user_id;
  SET @current_id = @current_id + @batch_size;
END WHILE;
-- 4. 輸出最終結(jié)果
SELECT * FROM temp_results;

性能對(duì)比
直接JOIN:耗時(shí)120秒,內(nèi)存占用峰值2.8GB
分批次JOIN:總耗時(shí)28秒,單次批次內(nèi)存占用<500MB

三、子查詢優(yōu)化:從嵌套到JOIN的轉(zhuǎn)換藝術(shù)

1. 標(biāo)量子查詢轉(zhuǎn)換為JOIN

標(biāo)量子查詢(返回單個(gè)值)常見(jiàn)于"查詢訂單中金額最高的商品"場(chǎng)景,但其嵌套查詢結(jié)構(gòu)會(huì)導(dǎo)致多次執(zhí)行:

-- 原始標(biāo)量子查詢:每次查詢都觸發(fā)子查詢
SELECT order_id, product_id, price,
  (SELECT MAX(price) FROM order_items WHERE order_id = o.order_id) as max_price
FROM order_items o
WHERE order_id IN (1001, 1002, 1003);
-- 優(yōu)化方案:轉(zhuǎn)換為自JOIN
SELECT o1.order_id, o1.product_id, o1.price, o2.max_price
FROM order_items o1
JOIN (
  SELECT order_id, MAX(price) as max_price
  FROM order_items
  GROUP BY order_id
) o2 ON o1.order_id = o2.order_id
WHERE o1.order_id IN (1001, 1002, 1003);

執(zhí)行計(jì)劃分析
子查詢版本:外層查詢3行,每行觸發(fā)一次子查詢(掃描100行/次),總掃描300行
JOIN版本:子查詢先聚合生成臨時(shí)表(3行),再與主表JOIN,總掃描103行

2. EXISTS子查詢與IN子查詢的選擇與優(yōu)化

在"查詢有未支付訂單的用戶"場(chǎng)景中,EXISTS與IN的選擇直接影響性能:

-- 場(chǎng)景:users表10萬(wàn)行,orders表100萬(wàn)行
CREATE TABLE users (user_id INT PRIMARY KEY, username VARCHAR(50));
CREATE TABLE orders (order_id INT, user_id INT, status VARCHAR(20), KEY idx_user_status (user_id, status));
-- 錯(cuò)誤用法:IN子查詢導(dǎo)致全表掃描
SELECT u.user_id, u.username
FROM users u
WHERE u.user_id IN (
  SELECT o.user_id FROM orders o WHERE o.status = '未支付'
);
-- 優(yōu)化方案:EXISTS結(jié)合索引
SELECT u.user_id, u.username
FROM users u
WHERE EXISTS (
  SELECT 1 FROM orders o 
  WHERE o.user_id = u.user_id AND o.status = '未支付'
);
-- 更優(yōu)方案:JOIN + 聚合
SELECT u.user_id, u.username
FROM users u
JOIN orders o ON u.user_id = o.user_id AND o.status = '未支付'
GROUP BY u.user_id, u.username;

性能測(cè)試數(shù)據(jù)
IN子查詢:耗時(shí)18秒,掃描orders表100萬(wàn)行
EXISTS子查詢:耗時(shí)3.2秒,利用idx_user_status索引掃描20萬(wàn)行
JOIN方案:耗時(shí)1.8秒,通過(guò)索引過(guò)濾后JOIN結(jié)果集10萬(wàn)行

3. WITH RECURSIVE優(yōu)化遞歸子查詢

在處理層級(jí)數(shù)據(jù)(如部門架構(gòu))時(shí),遞歸子查詢可能導(dǎo)致性能驟降,可通過(guò)CTE(Common Table Expression)優(yōu)化:

-- 原始遞歸子查詢:查詢部門及其所有子部門
SELECT dept_id, parent_id, dept_name
FROM departments
WHERE dept_id = 1001
UNION ALL
SELECT d.dept_id, d.parent_id, d.dept_name
FROM departments d
JOIN (
  SELECT dept_id, parent_id, dept_name
  FROM departments
  WHERE dept_id = 1001
) sub ON d.parent_id = sub.dept_id;
-- 優(yōu)化方案:WITH RECURSIVE CTE
WITH RECURSIVE dept_hierarchy AS (
  -- 初始查詢:根部門
  SELECT dept_id, parent_id, dept_name, 1 as level
  FROM departments
  WHERE dept_id = 1001
  UNION ALL
  -- 遞歸查詢:子部門
  SELECT d.dept_id, d.parent_id, d.dept_name, dh.level + 1
  FROM departments d
  JOIN dept_hierarchy dh ON d.parent_id = dh.dept_id
)
SELECT * FROM dept_hierarchy;

執(zhí)行效率對(duì)比
原始遞歸:耗時(shí)7.5秒,重復(fù)掃描父部門數(shù)據(jù)
CTE優(yōu)化:耗時(shí)1.2秒,利用CTE緩存中間結(jié)果,避免重復(fù)查詢

四、索引與統(tǒng)計(jì)信息的深度優(yōu)化

1. 覆蓋索引與前綴索引的應(yīng)用

當(dāng)查詢字段可完全通過(guò)索引獲取時(shí),覆蓋索引可避免回表查詢。以訂單查詢?yōu)槔?/p>

-- 原始查詢:需要回表查詢
EXPLAIN SELECT order_id, create_time, total_amount
FROM orders
WHERE user_id = 1234 AND create_time > '2025-05-01';
-- 優(yōu)化方案:創(chuàng)建覆蓋索引
ALTER TABLE orders ADD KEY idx_user_time_amount (user_id, create_time, total_amount);
-- 優(yōu)化后執(zhí)行計(jì)劃:Using index(覆蓋索引)
EXPLAIN SELECT order_id, create_time, total_amount
FROM orders
WHERE user_id = 1234 AND create_time > '2025-05-01';

對(duì)于長(zhǎng)文本字段(如商品描述),前綴索引可在空間與性能間取得平衡:

-- 創(chuàng)建前綴索引(取前100個(gè)字符)
ALTER TABLE products ADD KEY idx_desc_prefix (description(100));
-- 查詢包含"人工智能"的商品
SELECT product_id, name
FROM products
WHERE description LIKE '%人工智能%';

2. 統(tǒng)計(jì)信息更新與直方圖優(yōu)化

MySQL的查詢優(yōu)化器依賴表統(tǒng)計(jì)信息生成執(zhí)行計(jì)劃,過(guò)時(shí)統(tǒng)計(jì)信息會(huì)導(dǎo)致錯(cuò)誤決策:

-- 場(chǎng)景:訂單表新增90%的"電子產(chǎn)品"訂單,但統(tǒng)計(jì)信息未更新
-- 錯(cuò)誤執(zhí)行計(jì)劃:選擇全表掃描而非索引
EXPLAIN SELECT * FROM orders WHERE category = '電子產(chǎn)品';
-- 優(yōu)化方案:更新表統(tǒng)計(jì)信息
ANALYZE TABLE orders;
-- 高級(jí)優(yōu)化:為category字段創(chuàng)建直方圖
ALTER TABLE orders SET STATISTICS_PERSISTENT=ON;
ANALYZE TABLE orders UPDATE HISTOGRAM ON category;

五、復(fù)雜查詢的分拆與緩存策略

1. 大查詢分拆為多個(gè)小查詢

當(dāng)單個(gè)查詢涉及超過(guò)5張表關(guān)聯(lián)時(shí),可拆分為多個(gè)子查詢分步執(zhí)行:

-- 原始復(fù)雜查詢:五表關(guān)聯(lián)
SELECT o.order_id, u.username, p.product_name, c.category_name, s.status_name
FROM orders o
JOIN users u ON o.user_id = u.user_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
JOIN categories c ON p.category_id = c.category_id
JOIN order_status s ON o.status_id = s.status_id
WHERE o.create_time > '2025-06-01';
-- 優(yōu)化方案:分三步查詢
-- 1. 查詢訂單基本信息
CREATE TEMPORARY TABLE temp_orders AS
SELECT order_id, user_id, status_id, create_time
FROM orders
WHERE create_time > '2025-06-01';
-- 2. 關(guān)聯(lián)用戶和狀態(tài)表
CREATE TEMPORARY TABLE temp_orders_users AS
SELECT o.order_id, u.username, s.status_name
FROM temp_orders o
JOIN users u ON o.user_id = u.user_id
JOIN order_status s ON o.status_id = s.status_id;
-- 3. 關(guān)聯(lián)商品和分類表
SELECT o.order_id, u.username, p.product_name, c.category_name, o.status_name
FROM temp_orders_users o
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
JOIN categories c ON p.category_id = c.category_id;

2. 結(jié)果緩存與查詢緩存策略

對(duì)于高頻低變的查詢,可利用MySQL查詢緩存或應(yīng)用層緩存:

-- MySQL查詢緩存(需配置query_cache_type=1)
SELECT SQL_CACHE order_id, total_amount
FROM orders
WHERE create_time BETWEEN '2025-06-10' AND '2025-06-20';
-- 應(yīng)用層緩存示例(PHP代碼)
$cacheKey = 'orders_20250610_20250620';
$orders = redis_get($cacheKey);
if (!$orders) {
  $orders = db_query("SELECT order_id, total_amount FROM orders WHERE create_time BETWEEN '2025-06-10' AND '2025-06-20'");
  redis_set($cacheKey, $orders, 3600); // 緩存1小時(shí)
}

六、實(shí)戰(zhàn)案例:電商系統(tǒng)復(fù)雜查詢優(yōu)化全流程

場(chǎng)景:查詢"近30天內(nèi)購(gòu)買過(guò)TOP10熱銷商品的用戶及其復(fù)購(gòu)率"

原始查詢(耗時(shí)12秒)

SELECT u.user_id, u.username, COUNT(DISTINCT o.order_id) as order_count,
  (SELECT COUNT(*) FROM orders o2 WHERE o2.user_id = u.user_id AND o2.create_time > '2025-05-20') as total_orders,
  (COUNT(DISTINCT o.order_id) / (SELECT COUNT(*) FROM orders o3 WHERE o3.user_id = u.user_id AND o3.create_time > '2025-05-20')) as repurchase_rate
FROM users u
JOIN orders o ON u.user_id = o.user_id
JOIN order_items oi ON o.order_id = oi.order_id
WHERE o.create_time > '2025-05-20'
AND oi.product_id IN (
  -- TOP10熱銷商品
  SELECT product_id FROM order_items
  WHERE create_time > '2025-05-20'
  GROUP BY product_id ORDER BY SUM(quantity) DESC LIMIT 10
)
GROUP BY u.user_id, u.username;

優(yōu)化步驟

  1. 子查詢轉(zhuǎn)JOIN:將TOP10商品查詢轉(zhuǎn)為CTE
WITH top_products AS (
  SELECT product_id FROM order_items
  WHERE create_time > '2025-05-20'
  GROUP BY product_id ORDER BY SUM(quantity) DESC LIMIT 10
)
  1. 預(yù)計(jì)算復(fù)購(gòu)率數(shù)據(jù):避免重復(fù)查詢訂單表
CREATE TEMPORARY TABLE temp_user_orders AS
SELECT user_id, COUNT(*) as total_orders
FROM orders
WHERE create_time > '2025-05-20'
GROUP BY user_id;
  1. 重構(gòu)查詢結(jié)構(gòu)
-- 優(yōu)化后查詢(耗時(shí)1.4秒)
WITH top_products AS (
  SELECT product_id FROM order_items
  WHERE create_time > '2025-05-20'
  GROUP BY product_id ORDER BY SUM(quantity) DESC LIMIT 10
),
user_order_stats AS (
  SELECT user_id, COUNT(*) as total_orders
  FROM orders
  WHERE create_time > '2025-05-20'
  GROUP BY user_id
)
SELECT u.user_id, u.username, 
  COUNT(DISTINCT o.order_id) as order_count,
  s.total_orders,
  IF(s.total_orders > 0, COUNT(DISTINCT o.order_id) / s.total_orders, 0) as repurchase_rate
FROM users u
JOIN orders o ON u.user_id = o.user_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN top_products tp ON oi.product_id = tp.product_id
LEFT JOIN user_order_stats s ON u.user_id = s.user_id
WHERE o.create_time > '2025-05-20'
GROUP BY u.user_id, u.username;

優(yōu)化效果分析

  • 執(zhí)行計(jì)劃掃描行數(shù)從890萬(wàn)降至78萬(wàn)
  • 臨時(shí)表使用從Using temporary變?yōu)?code>Using index
  • 復(fù)購(gòu)率計(jì)算從3次子查詢變?yōu)?次JOIN

七、總結(jié):復(fù)雜查詢優(yōu)化的核心原則

  1. 減少數(shù)據(jù)掃描量:通過(guò)索引、過(guò)濾條件先縮小結(jié)果集
  2. 避免重復(fù)計(jì)算:利用CTE、臨時(shí)表緩存中間結(jié)果
  3. 優(yōu)先JOIN替代子查詢:嵌套子查詢的嵌套層級(jí)應(yīng)控制在2層以內(nèi)
  4. 關(guān)注執(zhí)行計(jì)劃:重點(diǎn)優(yōu)化Using filesort、Using temporaryFull table scan等低效操作

實(shí)際優(yōu)化中需結(jié)合業(yè)務(wù)場(chǎng)景靈活調(diào)整策略,必要時(shí)可通過(guò)STRAIGHT_JOIN強(qiáng)制指定JOIN順序,或利用SQL_BIG_RESULT提示優(yōu)化分組排序性能。記住:最優(yōu)的查詢方案往往是數(shù)據(jù)庫(kù)引擎成本估算與業(yè)務(wù)邏輯的平衡點(diǎn)。

到此這篇關(guān)于MySQL復(fù)雜查詢優(yōu)化實(shí)戰(zhàn)之從多表關(guān)聯(lián)到子查詢的性能突破(全流程)的文章就介紹到這了,更多相關(guān)mysql多表關(guān)聯(lián)到子查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql同步問(wèn)題之Slave延遲很大優(yōu)化方法

    mysql同步問(wèn)題之Slave延遲很大優(yōu)化方法

    這篇文章主要介紹了mysql同步問(wèn)題之Slave延遲很大優(yōu)化方法,需要的朋友可以參考下
    2016-05-05
  • MySQL高效導(dǎo)入多個(gè).sql文件方法詳解

    MySQL高效導(dǎo)入多個(gè).sql文件方法詳解

    MySQL有多種方法導(dǎo)入多個(gè).sql文件,常用的有兩個(gè)命令:mysql和source,如何提高導(dǎo)入速度,在導(dǎo)入大的sql文件時(shí),建議使用mysql命令
    2018-10-10
  • Mac上安裝Mysql的詳細(xì)步驟及配置

    Mac上安裝Mysql的詳細(xì)步驟及配置

    這篇文章主要給大家介紹了關(guān)于Mac上安裝Mysql的詳細(xì)步驟及配置,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • MySQL慢SQL語(yǔ)句常見(jiàn)誘因以及解決方法

    MySQL慢SQL語(yǔ)句常見(jiàn)誘因以及解決方法

    在本篇文章里小編給大家整理的關(guān)于MySQL慢SQL語(yǔ)句常見(jiàn)誘因以及解決方法,有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • mysql配置SSL證書(shū)登錄的實(shí)現(xiàn)

    mysql配置SSL證書(shū)登錄的實(shí)現(xiàn)

    應(yīng)國(guó)家等級(jí)保護(hù)三級(jí)安全要求,mysql 的 ssl 需要安全證書(shū)加密,本文主要介紹了mysql配置SSL證書(shū)登錄,感興趣的可以了解一下
    2021-09-09
  • MySQL授權(quán)用戶訪問(wèn)數(shù)據(jù)操作方式

    MySQL授權(quán)用戶訪問(wèn)數(shù)據(jù)操作方式

    用戶授權(quán)操作可以控制數(shù)據(jù)庫(kù)用戶對(duì)數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn)權(quán)限,本文就來(lái)介紹MySQL授權(quán)用戶訪問(wèn)數(shù)據(jù)操作方式,感興趣的可以了解一下
    2023-10-10
  • mysql索引失效的十大問(wèn)題小結(jié)

    mysql索引失效的十大問(wèn)題小結(jié)

    最近生產(chǎn)爆出一條慢sql,原因是用了or和!=,導(dǎo)致索引失效。于是,總結(jié)了索引失效的十大雜癥,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • mysql 索引詳細(xì)介紹

    mysql 索引詳細(xì)介紹

    這篇文章主要介紹了mysql 索引詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • MySQL將多條數(shù)據(jù)合并成一條的完整示例

    MySQL將多條數(shù)據(jù)合并成一條的完整示例

    我們?cè)谑褂胢ysql的時(shí)候常會(huì)遇到合并的需求,下面這篇文章主要給大家介紹了關(guān)于MySQL將多條數(shù)據(jù)合并成一條的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法

    MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法

    這篇文章主要介紹了MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-07-07

最新評(píng)論