私は約10M行(ID、最初、最後など)のテーブル(名前)を持っており、私はそれを姓で消化可能なグループに分割する必要がありますレター(例:100でグループ化されたAで終わるすべての姓)、および各グループの最初と最後のレコードを取得します。MySQLクエリ - 大きなクエリのグループから最初と最後の行を取得
私は最も効率的な方法は何か、サブクエリーに精通していないか分かりません。私は姓の文字(すべてのA)で行を数え、100で割り、最初と最後の行を選択すべきだと思いますか?効率的なクエリを取得するためにここで苦労しています。
SELECT COUNT(id)
FROM names
WHERE last REGEXP '^[A].*$'/100
は私のグループ
SELECT COUNT (id), min(first), max(last),
(SELECT COUNT(id)
FROM names
WHERE last REGEXP '^[A].*$'/100)
FROM names
のカウントを与えるOK基本から始めてみましょう右構文に
なぜ正規表現を含む文字列を100で除算していますか? – Barmar
カウントを100で割ったければ、それは 'COUNT(id)/ 100'でなければなりません。 – Barmar
"100"の表記が何であるかは不明です。ぺージ化された結果を得たいと思っていますか?言い換えれば、100行だけを必要とする場合は、最初に文字で結果セットを分割するのはなぜですか? 10Mのレコードでは、1文字あたり100行以上の>>があると仮定します。また、ここでは 'REGEXP'のオーバーヘッドの必要はありません。このユースケースに 'LIKE'を使うだけです。 –