yaski
web3
- Регистрация
- 21 Фев 2010
- Сообщения
- 658
- Реакции
- 500
- Автор темы
- #1
В базе имеются две таблицы
passport с полями
FAM, NAM, OT, BIRTH, PASSPORT...
и таблица snils с полями
FAM, NAM, OT, BIRTH, SNILS...
Нужно сделать выборку из обоих таблиц всех записей, где совпадают фамилия имя отчество и дата рождения. Проблема состоит в том, что в базе snils полтора миллиона записей и в таблице passport 120 тысяч записей. Поэтому выборка даже десяти записей занимает продолжительное время. Например такой запрос
исполняется 42 секунды, а такой
22 секунды.
Но это очень много и полтора миллиона записей будут выбираться 2 месяца.
Помогите оптимизировать запрос!
passport с полями
FAM, NAM, OT, BIRTH, PASSPORT...
и таблица snils с полями
FAM, NAM, OT, BIRTH, SNILS...
Нужно сделать выборку из обоих таблиц всех записей, где совпадают фамилия имя отчество и дата рождения. Проблема состоит в том, что в базе snils полтора миллиона записей и в таблице passport 120 тысяч записей. Поэтому выборка даже десяти записей занимает продолжительное время. Например такой запрос
Код:
SELECT passport.*, snils.* FROM passport LEFT join snils ON passport.FAM=snils.FAM AND passport.NAM=snils.NAM AND passport.OT=snils.OT AND passport.BIRTH=snils.BIRTH LIMIT 0 , 10
Код:
SELECT * FROM passport,snils WHERE passport.FAM=snils.FAM AND passport.NAM=snils.NAM AND passport.OT=snils.OT AND passport.BIRTH=snils.BIRTH LIMIT 0 , 10
Но это очень много и полтора миллиона записей будут выбираться 2 месяца.
Помогите оптимизировать запрос!