8 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
數(shù)據(jù)量很大可以考慮分表。
優(yōu)化方案,可以考慮分兩次查詢,第一個(gè)不重復(fù)才去檢查另一個(gè),同時(shí)給這兩個(gè)字段加索引。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
1、兩個(gè)字段都有單獨(dú)的唯一索引用union all查詢判斷結(jié)果不會(huì)慢的
2、利用mysql唯一索引的沖突異常,應(yīng)用捕獲異常也可以

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
我今天下午用mysql+navicat試了一下,100w條數(shù)據(jù),
總共6組結(jié)果
1、無(wú)索引,union,平均0.7s
2、無(wú)索引,or,平均0.4s
3、兩個(gè)唯一性索引,union,平均0.1s
4、兩個(gè)唯一性索引,or,平均0.08
5、一個(gè)聯(lián)合索引,union,平均0.4s
6、一個(gè)聯(lián)合索引,or,平均0.4s
SELECT
COUNT(*)
FROM
(
SELECT
*
FROM
USER
WHERE
phone = "496066"
UNION
SELECT
*
FROM
USER
WHERE
username = '888888'
) aa;
SELECT
COUNT(*)
FROM
USER
WHERE
phone = '496066'
OR username = '888888';

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
其實(shí)沒(méi)必要count, limit 1就好,有則立即放回,沒(méi)有第一個(gè)條件再查下一個(gè)
添加回答
舉報(bào)