Ми використовуємо PostgreSQL v8.2.3.
Існують таблиці: EMPLOYEE та EMAILLIST .
Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6)
Table 2: EMAILLIST (email)
2 таблиці з'єднані таким чином, що якщо або EMPLOYEE.EMAIL1, або EMPLOYEE.EMAIL2 не мають відповідного запису, ці рядки будуть повернуті.
SELECT employee.email1, employee.email2,
e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched
FROM employee
LEFT JOIN emaillist e1 ON e1.email = employee.email1
LEFT JOIN emaillist e2 ON e2.email = employee.email2
WHERE e1.email IS NULL OR e2.email IS NULL
Колонка EMAIL
який є VARCHAR (256) з EMAILLIST
таблиці індексується. Тепер час відповіді - 14 секунд.
Статистика підрахунку таблиць: На даний момент EMPLOYEE має 165,018 записів, а EMAILLIST має 1810,228 записів, і в майбутньому очікується зростання обох таблиць.
- Це гарна ідея / підхід до індексації стовпця VARCHAR? Це питання негайно вразило мене через те, що ми не індексували стовпець VARCHAR у нашій програмі. Порада / пропозиція експертів щодо цього високо оцінені.
- За допомогою цього поточного запиту та індексу час відповіді 14 секунд є розумним чи є можливість для подальшої настройки? Що таке досвід / думка інших користувачів у реальному часі на основі такого розміру таблиці та часу відгуку?
ПРИМІТКА . Тут детально пояснюється моя фактична потреба / випадок використання .